移動端自動化測試 -- appium 之Desired Capabilities與 定位控制項

來源:互聯網
上載者:User

標籤:工具   NPU   stat   索引值   參考   splash   div   star   控制項   

一、Desired Capabilities

Desired Capabilities 在啟動 session 的時候是必須提供的。

Desired Capabilities 本質上是以 key value 字典的方式存放,用戶端將這些索引值對發給服務端,告訴服務端我們想要怎麼測試。它告訴 appium Server這樣一些事情:

  • 本次測試是啟動瀏覽器還是啟動行動裝置。

  • 是啟動Andorid還是啟動iOS。

  • 啟動Android時,app的package是什麼。

  • 啟動Android時,app的activity是什麼。

固定寫法參考如下:

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與 定位控制項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.