1、Appium使用WebDriverAgent之后,新增了一种定位方法iOSNsPredicate,
driver.findElementByIosNsPredicate("name = ‘head new‘"); // 等于
driver.findElementByIosNsPredicate("name LIKE ‘*new‘"); // 模糊匹配
driver.findElementByIosNsPredicate("name MATCHES ‘^$‘"); // 正则表达式匹配
driver.findElementsByIosNsPredicate("name CONTAINS ‘我的‘"); // 包含
driver.findElementsByIosNsPredicate("name BEGINSWITH ‘我的‘"); // 以"我的"开始
List<IOSElement> items3 = driver.findElementsByIosNsPredicate("name BEGINSWITH ‘我的‘ && name ENDSWITH ‘消息‘"); // 以"我的"开始并且以"消息"结尾
其中属性名参照inspector的属性字段,关键字LIKE,MATCHES,CONTAINS,BEGINSWITH,ENDSWITH必须是大写,匹配的字符需要用单引号
2、同样,结合pagefactory,可以使用注解方式标注元素,列举一种方式,其他同理
//goods价格
@AndroidFindBy(id = "com.sankuai.meituan:id/yuan")
@iOSXCUITFindBy(iOSNsPredicate = "name BEGINSWITH '¥'")
private MobileElement poiPrice;
注:注意要使用新版本java-client
<dependency><groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>5.0.4</version>
</dependency>
官方参考地址:
https://github.com/appium/appium/tree/master/docs/en/writing-running-appium