一、元素屬性介紹
? 1、元素屬性
? 2、查看各定位方式執(zhí)行效率
二、iOS常用定位方法
? 1、accessibility_id
? 2、class_name
? 3、Xpath
? 4、ios_class_chain(類(lèi)型鏈)
? 5、ios_predicate(謂詞)
一個(gè)頁(yè)面最基本組成單元是元素,想要定位一個(gè)元素,我們需要特定的信息來(lái)說(shuō)明這個(gè)元素的唯一特征。
一、元素屬性介紹 ?
iOS自動(dòng)化元素查找工具,我使用的是Appium的inspector。最新版的appium自動(dòng)展示多種元素定位表達(dá)式,還可以查看每種定位表達(dá)式的執(zhí)行效率。
? 1、元素屬性
type
元素類(lèi)型,與className作用一致,如:XCUIElementTypeButton
value
一般不用
name
元素的文本內(nèi)容,可用作 AccessibilityId定位方式,如:ClearEmail
label
絕大多數(shù)情況下,與 name 作用一致
enabled
元素是否可點(diǎn)擊,一般值為true或者false
visible
元素是否可見(jiàn),一般值為true或者false
? 2、查看各定位方式執(zhí)行效率
? Appium的inspector功能中,選擇某個(gè)元素后在“selected Element”中會(huì)展示多個(gè)定位表達(dá)式,而且點(diǎn)擊定位表達(dá)式后面的“Get Timing”,可以顯示每個(gè)定位表達(dá)式的執(zhí)行時(shí)間。
二、iOS常用定位方法
? 1、accessibility_id
? iOS自動(dòng)化測(cè)試元素定位的accessibility_id主要使用元素的label或name(兩個(gè)屬性的值都一樣)屬性進(jìn)行定位。
? 例如:第一張截圖中l(wèi)abel或name都是“我的功能”
driver.find_element_by_accessibility_id("我的功能")
driver.find_element(MobileBy.ACCESSIBILITY_ID, ?"我的功能")
? 2、class_name
? class_name定位方法使用元素的type屬性,type屬性表示控件類(lèi)型,一般不具有唯一性,因此class_name不常用。
? 例如:type屬性為:XCUIElementTypeButton
driver.find_element_by_class_name("XCUIElementTypeButton")
driver.find_element(MobileBy.CLASS_NAME, "XCUIElementTypeButton")
? 3、Xpath ?
Appium對(duì)app原生環(huán)境的xpath定位方法執(zhí)行效率很低,從iOS 10開(kāi)始使用的 XCUITest 框架原生不支持,定位速度很慢,官方不推薦這種方式。但是在實(shí)際使用中,當(dāng)其他定位方式都不能找到元素時(shí),可以嘗試xpath定位。
? 例如:第一張截圖中“我的功能”定位
driver.find_element_by_xpath("http://XCUIElementTypeStaticText[@name='我的功能']")
driver.find_element(MobileBy.XPATH, "http://XCUIElementTypeStaticText[@name='我的功能']")
? 4、ios_class_chain(類(lèi)型鏈)
? ios_class_chain僅支持iOS 10或以上,且僅限于WebDriverAgent 框架中使用。此方法用于替代xpath,但該方法還有待完善,沒(méi)有納入官方文檔。
? Github說(shuō)明地址:https://github.com/appium/appium-xcuitest-driver
? 例如:第一張截圖中“我的功能”定位
driver.find_element_by_ios_class_chain('**/XCUIElementTypeStaticText[`label == "我的功能"`]')
driver.find_element(MobileBy.IOS_CLASS_CHAIN, '**/XCUIElementTypeStaticText[`label == "我的功能"`]')
? 5、ios_predicate(謂詞)
? iOS Predicate 即謂詞邏輯。ios_predicate定位方法支持iOS所有的版本,也就是能適配XCUITest 和 UIAutomation底層測(cè)試框架,使用的就是iOS編程語(yǔ)言,因此可以把此方法作為首選定位方式。
? 謂詞表達(dá)式由屬性、運(yùn)算符和值構(gòu)成。
? ?1.1、常用的屬性
? ?在上面的表格中已經(jīng)介紹,可以使用的元素屬性:type、value、name、label、enabled、visible
? ?1.2、運(yùn)算符
? ?1.2.1、比較運(yùn)算符
?? ?比較運(yùn)算符 ?>, <, ==, >=, <=, !=
? ?可用于數(shù)值和字符串的比較,如:label == ‘我的功能’,label >= 500
? ?示例:
driver.find_element_by_ios_predicate("label == '我的功能'")
driver.find_element(MobileBy.IOS_PREDICATE, "label == '我的功能'")
driver.find_element_by_ios_predicate("type == 'XCUIElementTypeButton' AND value == 'ClearEmail'")
? ?
? ?1.2.2、范圍運(yùn)算符
? ?常用的范圍運(yùn)算符有:
? ?示例:
driver.find_element(MobileBy.IOS_PREDICATE, "name IN {'id_cell', 'id_alert'}")
driver.find_element_by_ios_predicate("value BETWEEN {5, 7}")
? ?
? ?1.2.3、字符串相關(guān)
? ?以字符串“自動(dòng)化軟件測(cè)試”為例:
包含某個(gè)字符串:label CONTAINS ‘軟件’
以某個(gè)字符串開(kāi)頭:label BEGINSWITH ‘自動(dòng)’
以某個(gè)字符串結(jié)束:label ENDSWITH ‘測(cè)試’
? 擴(kuò)展:在三個(gè)關(guān)鍵字后加上[c]、或者[d]、[cd]
[c]:表示不區(qū)分大小寫(xiě),可用于字母的校驗(yàn);
[d]:不區(qū)分發(fā)音符號(hào),即沒(méi)有重音符號(hào)($、#等);
[cd]:既不區(qū)分大小寫(xiě),也不區(qū)分發(fā)音符號(hào);
? ?例如:name CONTAINS[c] ABcd 和 ?name CONTAINS abcd是等同的
? ?示例:
driver.find_element_by_ios_predicate("label CONTAINS ‘軟件’")
? ?
? ?1.2.4、模糊匹配:LIKE
? ?模糊匹配也可以稱(chēng)為通配符匹配,?代表一個(gè)字符,*代表多個(gè)字符。
? ?示例:現(xiàn)有元素的label屬性:“自動(dòng)化軟件測(cè)試”
? ?label LIKE ‘自動(dòng)化軟件測(cè)試’ ? # 完全匹配
? ?label LIKE ‘自動(dòng)化?件測(cè)試’ ? ?# ? 匹配一個(gè)字符
? ?label LIKE ‘自動(dòng)化??測(cè)試’ ? ?# 兩個(gè)?號(hào)匹配兩個(gè)字符
? ?label LIKE ‘自?化?件測(cè)試’
? ?label LIKE ‘*軟件測(cè)試’ ? ? ?# *代表多個(gè)字符
? ?label LIKE ‘自動(dòng)化軟件*’
? ?label LIKE ‘自動(dòng)化*件測(cè)*’
? ?示例:
driver.find_element(MobileBy.IOS_PREDICATE, "label LIKE ‘*軟件測(cè)試")
? ?
? ?1.2.5、邏輯運(yùn)算符
? ?1.2.6、正則表達(dá)式:MATCHES
? ?以字符串的匹配為例:匹配字符串“自動(dòng)化軟件測(cè)試”,以“自”開(kāi)頭,然后以“試”結(jié)尾。
? ?表達(dá)式:label MATCHES ‘^自.+試$’文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-800547.html
? ?示例:
driver.find_element(MobileBy.IOS_PREDICATE, " label MATCHES ‘^自.+試$’")
? ??
?? ?符號(hào)說(shuō)明: ^ ?匹配字符串的開(kāi)頭
? ? ? ? ? ?. ? 匹配任意字符,除了換行符
? ? ? ? ? ?+ ?匹配 1 個(gè)或多個(gè)的表達(dá)式。
? ? ? ? ? ?$ ?匹配字符串的末尾
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-800547.html
到了這里,關(guān)于IOS自動(dòng)化測(cè)試元素定位的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!