例如,我有:
wd.findElement.By(name("searchBttn"));
ui xml屏幕上的资源ID是
com.aut.android:id/searchBttn
和Appium无法找到该项目。我试过ID和名字。在这里我还能尝试其他的东西是否有一条我想要的线路相关列表的直接线?
答案 0 :(得分:7)
您可以通过资源ID在Appium中找到Android项目,但您必须指定整个软件包名称以及资源ID:
wd.findElement.By(id("com.aut.android:id/searchBttn"));
答案 1 :(得分:0)
我找不到关于这个主题的很多文档。您可以参考此链接 - https://groups.google.com/forum/#!topic/appium-discuss/LcjbXPFX1N0
答案 2 :(得分:0)
至少名字对我有用。我正在尝试找出它如何用于ID,但您可以查看以下内容。
示例:如果按钮文本设置为“testbtn”,则可以使用以下命令从Appium访问它:
driver.findElement(By.name("testbtn")).click();
这对我有用,试试吧。
编辑: 正如Appium开发人员之一here所述,目前似乎无法通过Android上的ID访问元素。
EDIT2: 此功能现已实施!正如我发现的那样,您现在可以使用selendroid通过ID访问Android中的元素(它似乎是Appium的子部分)。
在您的测试类中,您需要在设置时指定capabilities.setCapability("device", "selendroid");
而不是capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
现在您只需使用
访问按钮即可driver.findElement(By.id("testbtn")).click();
您可以在Selendroid here
中找到官方文档答案 3 :(得分:0)
您可以通过更多方式获取元素,而不是名称或ID不可用
可以使用resource-id查找元素find,如下例所示:
driver.findElement(By.xpath("//*[@resource-id='login']")).click();
driver.findElement(By.xpath("//*[@id='cash']")).click();
此处:com.android.calculator2:id/digit5
是完整的资源ID,可以像这样使用:
driver.findElement(By.id("com.android.calculator2:id/digit5")).click();
可以按类名找到:
driver.findElement(By.className("android.widget.Button")).click();
答案 4 :(得分:0)
我在python中遇到了同样的问题,尽管我可以在appium检查器中看到它们,但是我找不到具有id属性的元素。 一些应用程序具有驱动程序可以处理的多个上下文,例如NATIVE_APP和WEB_VIEW,因此我不得不将驱动程序的上下文切换为WEB_VIEW,以便它可以使用驱动程序来查找元素。find_elements_by_id(“”)( python语法< / strong>)
有关如何通过代码示例切换上下文的文档- http://appium.io/docs/en/writing-running-appium/web/hybrid/index.html