APPIUM自動化測試環境搭建
如果在線安裝Android SDK時,鏡像文件老是加載失敗時的解決方案
具體的安裝配置參考以下鏈接
在模擬器(Genymotion)上啓動app
環境
java: 8
appium: 1.14.2
Genymotion模擬器的安裝很簡單,在官網設置賬號,然後安裝後登錄賬號就行了。在主界面選擇系統進行安裝,安裝成功後啓動就能看到Android的主界面了。
Genymotion模擬器 de 默認端口是 5555
查看apk的apk包名和launcherActivity,參考以下的地址
寫Python腳本測試
添加依賴
Appium-Python-Client 0.47
selenium 3.141.0
測試代碼
# coding=utf-8
# 如果未安裝Appium-Python-Client,使用from appium import webdriver時報錯:ModuleNotFoundError: No module named 'appium'
from appium import webdriver
desired_caps = {
#系統類型 Android|IOS
'platformName': 'Android',
#設備名稱 備註:如果您使用的模擬器,就是模擬器中虛擬機的名稱
'deviceName': 'Samsung Galaxy S9',
#系統版本
'platformVersion': '9.0',
#指向模擬器的IP端口
'udid': '192.168.34.xx:5555',
# apk包名
'appPackage': 'com.taobao.taobao',
# apk的launcherActivity
'appActivity': 'com.taobao.tao.welcome.Welcome',
#等待超時,服務端沒接收到命令將關閉appium
'newCommandTimeout': '180',
#等待元素出現超時時間
'implicitlyWait': '30'
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
如果系統版本platformVersion=5.1
,可能會出現如下的錯誤
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Failed to launch Appium Settings app: Condition unmet after 5090 ms. Timing out.
解決方案是升級系統版本。參考地址:https://github.com/appium/appium/issues/12901
運行Appium
在終端下運行命令appium -a 127.0.0.1 -p 4723
,啓動appium
appium -a 127.0.0.1 -p 4723
[Appium] Welcome to Appium v1.14.2
[Appium] Non-default server args:
[Appium] address: 127.0.0.1
[Appium] Appium REST http interface listener started on 127.0.0.1:4723
運行Python腳本,在appium的運行日誌中出現[HTTP] <-- POST /wd/hub/session 200
;說明app在模擬器中啓動成功。
Appium 測試遇到問題解決方案
問題一:org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
解決辦法:
(1)啓動appium
(2)運行cmd 輸入 adb devices -l 查看UDIDadb devices -l List of devices attached 192.168.34.xx:5555 device product:vbox86p model:Samsung_Galaxy_S9 device:vbox86p transport_id:7
(3)再在cmd中輸入 appium -a 127.0.0.1 -p4723 -USamsung_Galaxy_S9 (-a表示ip,-p表示端口,-U表示設備的udid 可以通過appium -h查看更多命令)
C:\Users\hj>appium -a 127.0.0.1 -p4723 -USamsung_Galaxy_S9 [Appium] Welcome to Appium v1.14.2 [Appium] Non-default server args: [Appium] address: 127.0.0.1 [Appium] udid: Samsung_Galaxy_S9 [Appium] Deprecated server args: [Appium] -U,--udid => --default-capabilities '{"udid":"Samsung_Galaxy_S9"}' [Appium] Default capabilities, which will be added to each request unless overridden by desired capabilities: [Appium] udid: Samsung_Galaxy_S9 [Appium] Appium REST http interface listener started on 127.0.0.1:4723
(4)表示 appium服務啓動成功了,注意這個窗口不要關閉 因爲這是appium的服務 關了就關了服務,後面過程無法執行,而且這個窗口也是 日誌輸出的窗口用於排錯。
問題二:org.openqa.selenium.SessionNotCreatedException: A new session could not be created.
(Original error: Device ZX1C622BU3 was not in the list of connected devices)
(WARNING: The server did not provide any stacktrace information)解決辦法:可能手機驅動未安裝成功,雖然在adb devices中可以正常查看到devices
問題三:
問題:org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Waited 20 secs for selendroid server and it never showed up)解決辦法:
查看包的簽名的和Activity
例如:APP從I5版本後啓動界面的capabilities.setCapability(“appActivity”, “.CordovaApp”);
從I5版本後Acitivity變成了MainActivity
capabilities.setCapability(“appActivity”,".MainActivity");// 被測app的Activity類問題四:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)解決方法:
查看設備上是否安裝Selendroid,或者升級SelendroidIOS問題五:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)解決辦法:IOS_webkit_debug_proxy –c –[Udid] -d