我使用Appium(基于Selenium)为我的iOS应用程序编写UI测试。
我的问题是按照它们出现的顺序找到UITableView的所有单元格和组。
例如,此结构表示第一组打开的表:
UIATableGroup
--UIATableCell
--UIATableCell
--UIATableCell
--UIATableCell
UIATableGroup
UIATableGroup
UIATableGroup
UIATableGroup
我可以使用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 /谓词?
答案 0 :(得分:3)
经过一番猜测,我能够想出这个:
driver.findElements(MobileBy.IosUIAutomation(".tableViews()[0].elements()"))
它仍然很慢,但它确实有效。