Appium的一些常見問題及解決方法
問題1:報錯A new session could not be created. (Original error: Requested a new session but one was in progress)。
原因:之前的會話沒有關閉,然後又運行了測試例項導致的。
解決方法:停止Appium服務,選擇設定圖示,然後在General Settings中勾選覆蓋Session,重啟Appium,如下圖所示:
問題2:使用sendKeys()方法時出現無法輸入中文,而數字和英文字母都可以
解決方法:
cap.setCapability("unicodeKeyboard" , true);//使用 Unicode 輸入法
cap.setCapability("resetKeyboard", true); //重置輸入法到原有狀態
問題3:向sendKeys(CharSequence[])方法傳遞String型別的引數將會編譯出錯,提示:sendKeys(CharSequence[]) in the type WebElement is not applicable for the arguments (String)
解決:將java compiler 改變到1.5以上
注意:Java Build Path是執行時環境 ,Java Compiler是編譯時環境
問題4及解決:每次測試是否重新安裝app 以及簽名。做如下設定來避免每次測試都需要進行重新登入。
cap.setCapability("noSign", "True"); //不重新簽名apk
cap.setCapability("noReset", "True"); //是否不需要重新安裝app
問題5:報錯: Android devices must be of API level 17 or higher. Please change your device to Selendroid or upgrade Android on your device.
解決:Appium不支援4.2.2以下的系統,將手機或模擬器的系統進行更新。
問題6:
1. 如何找appPackage、appActivity
2. 報錯:Error occured while starting App. Original error: Permission to start activity denied. 這是由於啟動了錯誤的activity
解決:先對待測App進行一些操作,然後在cmd中輸入以下命令:
adb shell dumpsys activity activities > log.txt
命令執行後會生成一個log.txt檔案(若需要指定該檔案路徑,只需要在該檔名前新增路徑即可,例如:F:\Appium\log.txt),開啟該檔案,查詢關鍵字:LAUNCHER,即可找到,如下圖所示:(其中紅框部分分別為appPackage、appActivity)
問題7:如何獲得真機的deviceName
解決:
方法1: 命令列輸入:adb devices
紅框內的數字就是deviceName的一部分,完整結構是:品牌-型號_這串數字,
(型號可通過手機檢視,設定裡面有個關於手機),例如:oppo-oppo_a33-9729eb6b
方法2:利用UI Automator Viewer工具,列表顯示的是deviceName的全稱,如下圖所示:
注:需要有多臺Android裝置連線PC時才能顯示裝置列表,包括模擬器在內,否則不會出現該列表。