標籤:工具 NPU stat 索引值 參考 splash div star 控制項
一、Desired Capabilities
Desired Capabilities 在啟動 session 的時候是必須提供的。
Desired Capabilities 本質上是以 key value 字典的方式存放,用戶端將這些索引值對發給服務端,告訴服務端我們想要怎麼測試。它告訴 appium Server這樣一些事情:
固定寫法參考如下:
desired_caps = {}
desired_caps[‘platformName‘] = ‘Android‘
desired_caps[‘platformVersion‘] = ‘4.4.2‘
desired_caps[‘deviceName‘] = ‘127.0.0.1:62001‘
desired_caps[‘appPackage‘] = ‘com.tencent.mobileqq‘
desired_caps[‘appActivity‘] = ‘com.tencent.mobileqq.activity.SplashActivity‘ # android 專屬
desired_caps["unicodeKeyboard"] = "True"
desired_caps["resetKeyboard"] = "True"
desired_caps["noReset"] = "True"
driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)
deviceName:啟動哪種裝置,是真機還是模擬器?iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4…
automationName:使用哪種自動化引擎。appium(預設)還是Selendroid。
platformName:使用哪種移動平台。iOS, Android, orFirefoxOS。
platformVersion:指定平台的系統版本。例如指的Android平台,版本為5.1。
appActivity:待測試的app的Activity名字。比如MainActivity、.Settings。注意,原生app的話要在activity前加個”.“。
appPackage:待測試的app的Java package。比如com.example.android.myApp, com.android.settings。
- noReset:Don‘t reset app state before this session
- resetKeyboard:Reset keyboard to its original state, after running Unicode tests with
unicodeKeyboard capability. Ignored if used alone. Default false
- unicodeKeyboard:Enable Unicode input, default
false
/127.0.0.1:4723 : appium-server 地址
更多的參數配置:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
知識拓展:定位appPackage與appActivity 方法
SDK中下載最新的build-tools,通過aapt dump badging xxx.apk命令來查appPackage與appActivity。
CMD下輸入adb logcat | findstr /i Start,強制停止被測試軟體,再次開啟,觀察logcat。(手動開啟需要操作的appPackage ,從logcat 最下面開始找)
二、定位控制項
appium 通過 uiautomatorviewer.bat 工具來查看控制項的屬性。該工具位於 Android SDK 的 /tools/bin/ 目錄下。
1、id 定位
driver.find_element_by_id(‘resource-id‘)
# ID定位於selenium不同,可能存在重複的問題。
# appium-desktop抓取元素時如果出現有id,則可以直接用。
# resource-id可能出現重複,需要具體看下有多少個。2、class name 定位driver.find_element_by_class_name(‘class‘)# 對應class欄位,有可能存在多個相同class。# 多個相同class,每次擷取只取第一個遇到的元素。3、xpath 定位driver.find_element_by_xpath(‘//android.widget.EditText[@text="手機號"]‘)# Xpath路徑定位,與Web的Xpath定位在有一點點區別# Native App的定位以class為基準,主要用到參數有text、resource-id、index4、Accessibility ID定位 --這個方法屬於Appium擴充的定位方法driver.find_element_by_accessibility_id(‘content-desc‘)# Android對應content-desc IOS對應accessibility identifier# content-desc是給殘障人士定義的特殊欄位5、android uiautomator定位 --這個方法屬於Appium擴充的定位方法Android的源生測試架構的定位方式,定位速度快driver.find_element_by_android_uiautomator(‘new UiSelector().text("手機號")‘)# 匹配全部text文字driver.find_elements_by_android_uiautomator(‘new UiSelector().className("android.widget.TextView")‘) # className6、iOSPredicateString 僅支援iOS10以上,可以多個屬性同時定位,推薦。(替代XPATH)driver.find_elements_by_ios_predicate("label == ‘登入‘")
移動端自動化測試 -- appium 之Desired Capabilities與 定位控制項