appium+python自動化47-首次開啟app許可權彈窗問題

來源:互聯網
上載者:User

標籤:homepage   不能   bdr   __file__   ima   不重複   file   package   keyboard   

前言

用真機運行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 timePATH = 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):    ‘‘‘    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自動化47-首次開啟app許可權彈窗問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.