我正在使用 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/