如何在ios应用程序的appium 1.2.2版本中使用css选择器而不是xpath

时间:2014-09-12 10:58:38

标签: ios automation appium

我想在collectioncell中单击,我已将xpath视为

//UIAApplication[1]/UIAWindow[1]/UIAScrollView[3]/UIACollectionView[1]/UIACollectionCell[1]

driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[3]/UIACollectionView[1]/UIACollectionCell[1]")).click();`

但上面的xpath对我不起作用。我在mac中使用Appium1.2.2版本。如何根据css选择器修改上面的xpath?

1 个答案:

答案 0 :(得分:3)

可能不是你的XPath。已知Appium + IOS + XPath存在问题。我建议你使用我的答案的UIAutomation部分,但我也提供了一个可行的替代XPath解决方案。


在Appium中没有" CSS Selector"的概念。原生应用程序不是用HTML编写的。

By.cssSelector最接近的解决方案是:

By.className("UIACollectionCell")

然而,这将为您提供所有收集单元格,无论它们是否属于多个父UIACollectionView。那不是我们想要的。

我们希望找到相对于单个父元素的所有子元素

因此,您需要的定位器策略需要能够过滤相对于父元素的元素。我们有两个选择:XPath和UIAutomation

的XPath

value = "//UIACollectionView[1]/UIACollectionCell"
collectionCells = driver.findElement(By.xpath(value);

UIAutomation

好处是UIAutomation原生,快速,可靠。 XPath有时会给你完全不同的元素,或者仪器只会剥落并崩溃。

我假设您没有使用Appium的Java Client库。要使用UIAutomation定位器策略,您需要使用Appium的Java Client库。

使用UIAutomation定位器策略,我们可以解决您的问题:

value = ".collectionViews()[0].cells()"
collectionCells = driver.findElementsByIosUIAutomation(value)