iOSNsPredicate Appium 定位元素
Appium使用WebDriverAgent之後,新增了一種定位方法iOSNsPredicate,總結了一下使用方法:
MobileElement photo = driver.findElementByIosNsPredicate("name = ‘head new‘"); // 等於
MobileElement photo = driver.findElementByIosNsPredicate("name LIKE ‘*new‘"); // 模糊匹配
MobileElement photo = driver.findElementByIosNsPredicate("name MATCHES ‘^$‘"); // 正則表達式匹配
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 定位元素