在 Appium 中使用 NSPredicates 的第一天。
问题来了。
我在 View 中有 3 个 XCUIElementTypeTextField 元素。
我可以像这样使用 Xpath 来选择
"(//XCUIElementTypeTextField)[1]"
然后是 2 和 3。但是 Xpath 很慢,当我需要更复杂的解决方案时,我现在正在使用 NsPredicates。虽然我知道我可以通过其他策略进行搜索,但 NSPredicate 是否支持像上面的 xpath 这样的选择器? 我可以这样做吗:
"SUBQUERY(*, $el, $el.type == 'XCUIElementTypeTextField')[0]"
然而这并没有返回结果:
"type =='XCUIElementTypeTextField'"
会。
最佳答案
NSPredicate 基本上是定义逻辑条件的方式,Xpath 是一种用于搜索 XML 的语言。
我很确定您已经检查过,但也许其他人可以更多地了解如何使用 NSPredicate 检查 official source
更重要的是检查什么适用于 Appium:XCUIModeTest.java 中列出的基于 NSPredicate 的定位器 和 find_by_ios_predicate_tests.py
作为您的案例的解决方法,您可以使用谓词获取元素列表,稍后对其进行迭代以通过索引获取所需的元素。
关于ios - Appium NSPredicate 从子查询中选择单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47548835/