1. 程式人生 > >robotframework appium 安卓許可權問題

robotframework appium 安卓許可權問題

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