我想在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?
答案 0 :(得分:3)
可能不是你的XPath。已知Appium + IOS + XPath存在问题。我建议你使用我的答案的UIAutomation部分,但我也提供了一个可行的替代XPath解决方案。
在Appium中没有" CSS Selector"的概念。原生应用程序不是用HTML编写的。
By.cssSelector
最接近的解决方案是:
By.className("UIACollectionCell")
然而,这将为您提供所有收集单元格,无论它们是否属于多个父UIACollectionView
。那不是我们想要的。
因此,您需要的定位器策略需要能够过滤相对于父元素的元素。我们有两个选择:XPath和UIAutomation
value = "//UIACollectionView[1]/UIACollectionCell"
collectionCells = driver.findElement(By.xpath(value);
好处是UIAutomation原生,快速,可靠。 XPath有时会给你完全不同的元素,或者仪器只会剥落并崩溃。
我假设您没有使用Appium的Java Client库。要使用UIAutomation定位器策略,您需要使用Appium的Java Client库。
使用UIAutomation定位器策略,我们可以解决您的问题:
value = ".collectionViews()[0].cells()"
collectionCells = driver.findElementsByIosUIAutomation(value)