android 首次打開判斷專題及常見問題 - CSDN

2021-01-10 CSDN技術社區
前言

用真機運行appium代碼,首次打開app有的手機會出現權限彈窗問題,一般這種彈窗都是在引導頁前面或者引導頁後面出現。權限彈窗上面的按鈕都是固定的,
只需要定位到「始終允許」按鈕,點擊確定就可以了。還有一個問題是這種彈窗的個數不確定,有的app是2個有的是3個,為了解決這個問題,可以專門寫個判斷方法。
注意:模擬器是不會有這種權限彈窗的

環境:
appium 1.8
android 7.0
美團app

權限彈窗

1.以美團app為案例,安裝app首次啟動的時候,在引導頁出現權限彈出框,如下圖這種

2.這種彈窗是可以直接定位到的,這裡不能通過id去定位了,因為彈窗比較多,每次id都不太一樣,但是文本text都是一樣的:始終允許

定位系統彈窗

1.通過xpath來定位按鈕:始終允許

loc = ("xpath", "//*[@text='始終允許']")

2.用selenium裡面的顯示等待模塊(WebDriverWait)和判斷模塊(expected_conditions)封裝定位方法,之前selenium教程裡面詳細講過,這裡就不重複寫了

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 判斷是否有權限彈窗for i in range(5): loc = ("xpath", "//*[@text='始終允許']") try: e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc)) e.click() except: pass

3.寫個單獨的函數,封裝下判斷系統權限彈窗,在之前用例前調用一次就可以了

參考代碼

# coding:utf-8from appium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport osimport time# 作者:上海-悠悠 QQ交流群:512200893PATH = lambda x: os.path.join(os.path.dirname(os.path.realpath(__file__)), x)# 百度下載一個美團app,放當前腳本同一目錄print(PATH('meituan_626.apk'))desired_caps = { 'platformName': 'Android', 'deviceName': '127.0.0.1:62001', 'platformVersion': '7.0', 'app': PATH('meituan_626.apk'), 'appPackage': 'com.sankuai.meituan', 'appActivity': 'com.meituan.android.pt.homepage.activity.Welcome', 'noReset': 'true', # 'resetKeyboard': 'true', # 'unicodeKeyboard': 'true' }driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)time.sleep(3)def always_allow(driver, number=5): ''' 作者:上海-悠悠 QQ交流群:512200893 fuction:權限彈窗-始終允許 args:1.傳driver 2.number,判斷彈窗次數,默認給5次 其它: WebDriverWait裡面0.5s判斷一次是否有彈窗,1s超時 ''' for i in range(number): loc = ("xpath", "//*[@text='始終允許']") try: e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc)) e.click() except: passif __name__ == "__main__": # 調用始終允許函數 always_allow(driver)

在學習過程中有遇到疑問的,可以appium+python QQ群交流:330467341

相關焦點

  • android判斷edittext獲取焦點 - CSDN
    我們在開發中,可能會遇到需要判斷用戶在輸入框裡寫的內容合不合法,比如判斷用戶輸入的內容是否是手機號,接下來我通過詳細說明一個小Demo來解決這個問題首先看一下這個Demo實現的效果圖我多打了一位數字就會提示錯誤了
  • android啟動頁設計專題及常見問題 - CSDN
    轉載請註明出處:http://blog.csdn.net/wangjihuanghun/article/details/63255144啟動頁幾乎成為了每個app的標配,有些商家在啟動頁中增加了開屏廣告以此帶來更多的收入。
  • android可文本框專題及常見問題 - CSDN
    <EditTextandroid:id="@+id/textNormal"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="Normaltext"android:inputType="text
  • android布局詳解專題及常見問題 - CSDN
    <include android:id=」@+id/cell3 layout=」@layout/workspace_screen」 /></LinearLayout>  上面的代碼中的<include>標籤還使用了一個android:id屬性,實際上,該屬性指定的是workspace_screen.xml布局文件中的根節點的android
  • android 從後臺啟動頁面專題及常見問題 - CSDN
    layout.xml首先創建此頁面的布局文件:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
  • android 獲取某個控制項的焦點專題及常見問題 - CSDN
    schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/edit_layout"
  • android 進度條顯示時間專題及常見問題 - CSDN
    定義一個attrs.xml自定義CircleProgressViewpackage com.sample.circleprogressview.widget;import android.animation.ValueAnimator;import android.content.Context
  • android開發 自我優勢 - CSDN
    3、能夠有效避免APP運行過程中遇到的內存洩漏和內存溢出問題。4、熟練掌握線程之間通過Handler傳遞消息的機制原理5、熟練掌握自定義控制項,自定義組合控制項中View所經過的測量,布局,繪製的流程,以及Touch事件分發機制。
  • windows 服務啟動1053專題及常見問題 - CSDN
    1.問題描述今天在啟動一個Windows服務時,服務啟動不了,且提示:1053錯誤那麼是什麼導致了1053錯誤呢?這個問題就能解決了。」 3.實際解決於是根據他的思路,我雙擊了服務程序。結果出現了如下的提示框:
  • android 垂直約束 - CSDN
    發布的一個新布局( 翻譯成中文 「約束布局「 )它的使用方式有兩種在 AS 2.3 以上版本都可以使用滑鼠拖動使用代碼書寫控制項之間的約束這篇文章雖然是 ConstraintLayout 專題文章:constraint-layout:1.0.2'<android.support.constraint.ConstraintLayoutandroid:layout_width="match_parent"
  • android開發中分享功能 - CSDN
    :enable要設置為true如果要動態設置是否在列表中出現時,可以在代碼中設置enable的值 <activity android:theme="@style/No_title_transparent" android:label="@string/other_apps" android:name="
  • iot深圳 nb專題及常見問題 - CSDN
    關注同名公眾號「IoT黑板報」 ,獲取更多物理網資訊及乾貨 關注物聯網領域,尋求報導或投稿請郵件聯繫 jiawd@csdn.net高通驍龍835各項跑分出爐 性能碾壓去年所有旗艦手機@威鋒網 高通最新移動平臺 Snapdragon 835,基本上可以確認是今年旗艦智慧型手機的標配,在驍龍 835 真機到來之前,隨著昨日中國發布會的解禁,越來越多的相關跑分測試也隨之出爐
  • android關閉開機啟動 - CSDN
    = 0) { enableScreenAfterBoot(); } break; }在finishBooting裡面,一開始會判斷mBootAnimationComplete,然後啟動一些一直被hold的進程等,最後會通過UserController的sendBootCompletedLocked
  • t值判斷顯著性專題及常見問題 - CSDN
    提出問題  顯著性值p是一個很常見的事。比如我們在對比兩組或者是多組數據時,對於兩組而言,會做Two Sample T Test,然後給出一個p值,判斷兩者差異的顯著性。在ggplot2中,兩組數據對比時,我們常用的,就是boxplot,那麼,如何在作出兩組或者多組的boxplot的同時,標記出顯著性的數據呢?
  • android常用的五大布局 - CSDN
    ><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent
  • android布局和界面 - CSDN
    android:layout_gravity用於設置組件自身在父組件中的對齊方式。需要注意的是,此屬性與布局屬性android: gravity的區別。android:gravity用於設置View組件的對齊方式。
  • android 排列 - CSDN
    每一個LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。
  • f檢驗 matlab專題及常見問題 - CSDN
    15.71985 15.91986 15.71987 16.71988 15.31989 16.11990 16.2MATLAB實現參考網上多個代碼可得https://www.ilovematlab.cn/thread-246993-1-1.htmlhttps://blog.csdn.net
  • android國際化注意專題及常見問題 - CSDN
  • android 水平布局寬度 - CSDN
    ><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:gravity="center