APPIUM自動化測試之APP啓動

APPIUM自動化測試環境搭建

如果在線安裝Android SDK時,鏡像文件老是加載失敗時的解決方案

Android SDK 的安裝與配置

具體的安裝配置參考以下鏈接

APPIUM自動化測試環境搭建實踐

Appium+python自動化1-環境搭建(上)

Appium+python自動化2-環境搭建(下)

在模擬器(Genymotion)上啓動app

環境

java: 8

appium: 1.14.2

Genymotion模擬器的安裝很簡單,在官網設置賬號,然後安裝後登錄賬號就行了。在主界面選擇系統進行安裝,安裝成功後啓動就能看到Android的主界面了。

在這裏插入圖片描述

Genymotion模擬器 de 默認端口是 5555

查看apk的apk包名和launcherActivity,參考以下的地址

Appium+python自動化3-啓動淘寶app

寫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 測試遇到問題解決方案

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 查看UDID

adb 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,或者升級Selendroid

IOS問題五:
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章