標籤:模糊 class sel end 模糊比對 ntb 官方 running 參考
Appium使用WebDriverAgent之後,新增了一種定位方法iOSNsPredicate,總結了一下使用方法:
MobileElement photo = driver.findElementByIosNsPredicate("name = ‘head new‘"); // 等於
MobileElement photo = driver.findElementByIosNsPredicate("name LIKE ‘*new‘"); // 模糊比對
MobileElement photo = driver.findElementByIosNsPredicate("name MATCHES ‘^$‘"); // Regex匹配
List<IOSElement> items1 = driver.findElementsByIosNsPredicate("name CONTAINS ‘我的‘"); // 包含
List<IOSElement> items2 = driver.findElementsByIosNsPredicate("name BEGINSWITH ‘我的‘"); // 以"我的"開始
List<IOSElement> items3 = driver.findElementsByIosNsPredicate("name BEGINSWITH ‘我的‘ && name ENDSWITH ‘訊息‘"); // 以"我的"開始並且以"訊息"結尾
其中屬性名稱參照inspector的屬性欄位,關鍵字LIKE,MATCHES,CONTAINS,BEGINSWITH,ENDSWITH必須是大寫,匹配的字元需要用單引號
官方參考地址:
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/ios_predicate.md
最後給個建議:
1 選擇定位方式的判斷:
如果顯示在介面的文本唯一或是第一個出現:使用accessibility
如果class唯一或是第一個出現:className
ID或class不方便定位,控制項屬性有明確的匹配規則:accessibility
如果有工具可以直接給出準確的xpath:xpath
實在不行就用座標吧
2 如果控制項的屬性visible是false的話,請使用控制項座標並擷取中心點用tap點擊,直接點擊控制項會失敗
iOSNsPredicate Appium 定位元素