1. 程式人生 > >7.0 啟動app權限彈窗問題

7.0 啟動app權限彈窗問題

不同 6.0 記事本 現在 lam code list 設備名 留言

這裏提供兩種解決方案!

  1.安卓6.0+是可以直接利用uiautomator定位元素點擊!這個不細說,定位方式很多種...這個等待時間大家自己定大概兩到三秒即可!

    

#安卓6.0+點擊方式
driver.find_element_by_android_uiautomator(new UiSelector().textContains("允許"))

  但是一般來說彈窗大多數都是好多個---利用顯示等待:啟動app之後,在三秒內 沒0.5秒尋找一次元素,如果存在則點擊,不存在則報錯直接pass

  

try:
    while True:
        Element = ("
xpath", "//*[contains(@text,‘允許‘)]") ac = WebDriverWait(driver, 3, 0.5).until(lambda driver:driver.find_element_by_xpath(//*[contains(@text,"允許")])) ac.click() except: pass

2.還有一種定位方式如下,親測支持高版本,但是我沒有親自試過是否支持低版本手機的權限彈窗-----因為我不是用的這兩種---個人用的方法比較簡單粗暴+直接

但是呢,這裏建議大家搞個低版本的手機試下,我沒測是因為條件不允許,找不到低版本的手機.......希望有朋友測了之後截圖留言一波,讓我有個底....

try:
    while True:
        Element = ("xpath", "//*[contains(@text,‘允許‘)]")
        ac = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(Element))
        ac.click()
except:
    pass

    • 然後手動給每臺手機安裝一遍app,並用記事本獲其他玩意記下設備名稱

    • 打開app,準備好uiautomatorview(sdk目錄下那個定位元素的玩意..),如下圖所示記住這個坐標,如:

      admin_lists={‘2905bdb6‘:[360,1149],‘xxxx‘:[1,1]},如果定位不到【允許】這個坐標,就手動點一下允許,按照不動,你會發現在屏幕最上面有一個坐標DX:--/DY:--,記下這個坐標也是一樣的!

        技術分享圖片

admin_list={2905bdb6:[(360,1149)],xxxx:[(1,1)]}
for a in admin_list:
    deviceList=‘‘.join(os.popen(adb devices).readlines())
    Device=re.findall(r"(.+?)\t",deviceList)[0]
    print(Device)
    if a==Device:
        driver.tap(admin_list[a])

      

      原理就是先把我們測試機彈出權限允許的那個坐標給記錄下來,第一次安裝啟動的時候查詢一下設備名稱然後取到坐標,然後點擊---這個方法也是適合多設備

方法有點撈,但是實用靠譜---另外這裏不要想著去適配屏幕,這個不存在的,據我了解不同手機的彈窗樣式可能是不一樣的..

如果只彈出一個-直接用上面的方法就可以了,但是如果權限彈窗有多個呢:

加個方法就可以了---有多個的話,這個就得根據自己的app調試了...但是大同小異

如下所示:

admin_list={2905bdb6:[(360,1149)],xxxx:[(1,1)]}
for a in admin_list:
    deviceList=‘‘.join(os.popen(adb devices).readlines())
    Device=re.findall(r"(.+?)\t",deviceList)[0]
    print(Device)
    if a==Device:
        for i  in range(5):
            driver.tap(admin_list[a])
            time.sleep(3)

  

具體應該還有很多騷方法--大家可以自己研究一下,只要能實現就可以,我個人方面對於執行效率並沒有太過--(想不到詞了)

這章有一定的python語法:

循環、正則、os、range、readlines、dict取值----如果這個不太懂得-建議看下 廖雪峰的python3教程---直接百度廖雪峰就可以了

7.0 啟動app權限彈窗問題