java - 如何使用 UIAutomation 谓词查找 UIATableView 子元素?

标签 java ios selenium xpath

我正在使用 Appium(基于 Selenium)为我的 iOS 应用程序编写 UI 测试。

我的问题是按照它们出现的顺序找到 UITableView 的所有单元格和组。

例如,这个结构表示一个表,第一组打开:
UIA表组
--UIATableCell
--UIATableCell
--UIATableCell
--UIATableCell
UIA表组
UIA表组
UIA表组
UIA表组

我可以通过使用 xpath 获得上述顺序的列表:

driver.findElements(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/*"))

问题是 xpath 非常慢,所以我一直在使用 iOS UIAutomation 调用重构代码。

我可以用这个谓词得到所有组:

driver.findElements(MobileBy.IosUIAutomation(".tableViews()[0].groups()[0]"))

以及所有带有此内容的单元格:

driver.findElements(MobileBy.IosUIAutomation(".tableViews()[0].cells()[0]"))

但问题是我想同时保留上面的顺序。

暗中猜测:

driver.findElements(MobileBy.IosUIAutomation(".tableViews()[0].withPredicate(\"ALL valid == true\")"));

想法是利用组和单元格都有一个“有效”字段这一事实,但这只会使测试崩溃。

如何获得与我使用 xpath 所做的等效的 UIAutomation/谓词?

最佳答案

经过一番猜测,我得出了这个结论:

driver.findElements(MobileBy.IosUIAutomation(".tableViews()[0].elements()"))

它仍然很慢,但它可以工作。

关于java - 如何使用 UIAutomation 谓词查找 UIATableView 子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34817827/

相关文章:

ios - 发送解析推送通知时如何增加角标(Badge)编号

ios - 编辑按钮未显示在 UITabBarController 的 MoreNavigationController 中

c# - 如何在 C# 中使用 Selenium Grid?

java - Android Studio - 应用程序停止

java - jni getMethodID 用于获取构造函数 ID 时返回 Null

java - 在倒数计时器中启动另一个计时器

java - 修复 java servlet 服务的 HTML 中的相对路径(对于 HTML5 pushstate)

ios - 从模态 Controller 刷新 UIViewController

c# - 当前上下文中不存在名称 'PageFactory'

python - 为什么尝试使用 selenium 单击会出现 "ElementNotInteractableException"?