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

如何在ios应用程序的appium 1.2.2版本中使用css选择器而不是xpath,ios,automation,appium,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

我想在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

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


在Appium中没有“CSS选择器”的概念。本机应用程序不是用HTML编写的

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

By.className("UIACollectionCell")
但是,这将为您提供所有收集单元,无论它们是否属于多个父级
UIACollectionView
s。这不是我们想要的

我们希望找到相对于单个父元素的所有子元素 因此,所需的定位器策略需要能够过滤相对于父元素的元素。我们有两种选择:XPath和UIAutomation

XPath 自动化 好处是它是本地的、快速的、可靠的。XPath有时会给您提供完全不同的元素,或者工具会崩溃

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

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

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

最好的教程在这里:@Priyanshu-谢谢你的链接,但我的问题是关于appium的,css选择器的使用在这里是完全不同的。我只需要一种从父元素“UIACollectionView[1]”获取子元素“UIACollectionCell”的方法,UIAutomation的链接不再工作。你能更新一下吗?
value = ".collectionViews()[0].cells()"
collectionCells = driver.findElementsByIosUIAutomation(value)