robotframework appium 安卓許可權問題
阿新 • • 發佈:2018-10-31
robotframework 安卓許可權問題
- 在使用rf + appium 做UI 自動化的時候,總是會遇到請求許可權的彈框
- 而且各個機型上的彈窗,可能還不相同,這就比較坑了
- 機型那麼多,不可能每個機型都去做一下相容
- 所以就上網找了各種方法,最終使用: adb shell pm grant xxx.xxx.package xxx.xxx.permission 的方法
- 下面就介紹一下,怎樣查詢 apk 中的許可權,和使用命令來賦予許可權。
查詢許可權:
需要 aapt 這個工具,如果沒有請自行到網上下載,和 adb.exe 放到同一個目錄下。
aapt d permissions E:\app-debug.apk
這裡你就可以看到,apk 中配置的使用者所有的許可權
OK , 那麼下一步是怎樣使用 rf 執行,授權的命令。
在Ride 中設定一個,permission 的List 變數
然後建立一個關鍵字: 賦予許可權
主要使用了 Run process 這個關鍵字, 需要匯入 Process 庫
如果你手機上還沒有安裝APK, 那麼也可以使用 Run Process 執行 adb 命令安裝。
PS: Run Process 關鍵字是會等待 adb 命令執行完成的
不過這裡有點坑,直接用 Run Process 執行 adb install 是會一直卡住的,所以就迂迴了一下。
把 adb install package 寫到一個bat 指令碼中~
install.bat
@echo off
adb install -r %1
exit
然後是使用autoit 的 run 命令執行, 執行之後等待安裝成功~
run ${CURDIR}/install.bat ${CURDIR}/app/app-debug.apk
:FOR ${i} IN RANGE 60
sleep 0.5
${result} Run Process adb shell pm list packages -3|grep package:${package}
${flag} evaluate "" "${result.stdout}""".find("${package}")>0
run keyword if ${flag} exit for loop
執行指令碼之後,就迴圈 60次,每次等待 0.5s , 直到檢查到包名存在
安裝之後,我們需要檢查一下,是否安裝成功~
主要是利用 adb shell pm list packages -3|grep xxxx #注意這裡是 grep , 而不是在 cmd 視窗需要用 findstr
解除安裝應用的也貼一下~
最後讓我們組裝成case~
來執行一下~
沒毛病,看來可以正常安裝
接下來就是,手動開啟 app 去驗證一下, 還有沒有許可權的彈框~
額~, 折騰到最後,才發現有這個命令
可以賦予所有執行時許可權,而且有的手機上,還是會有詢問許可權的彈窗。。。
adb install -g test.apk
app installation:
install [-lrtsdg] PACKAGE
install-multiple [-lrtsdpg] PACKAGE...
push package(s) to the device and install them
-l: forward lock application
-r: replace existing application
-t: allow test packages
-s: install application on sdcard
-d: allow version code downgrade (debuggable packages only)
-p: partial application install (install-multiple only)
-g: grant all runtime permissions