找不到appium android驱动程序的findelementbyandroiduiautomator方法

Posted

技术标签:

【中文标题】找不到appium android驱动程序的findelementbyandroiduiautomator方法【英文标题】:Cannot find findelementbyandroiduiautomator method for appium android driver 【发布时间】:2019-11-04 17:15:39 【问题描述】:

我正在使用带有 mobileElement 类型转换的 android 驱动程序,但在我的方法列表中找不到 findelementbyandroiduiautomator 方法。所有其他方法都没有检查我的应用程序上的任何元素,这看起来是我最后的手段。

driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), cap);

我尝试使用该方法时遇到的编译器错误是:findelementbyandroiduiautomator method not found for driver。

【问题讨论】:

您为什么要尝试使用该方法?为什么不只是.findElement(By.xpath... 等。你最初是如何声明驱动程序的(在实例化之前)。 【参考方案1】:

如果您使用的是 Appium Java 客户端版本 6 以上,请尝试以下代码

AndroidDriver driver=new AndroidDriver(new URL(""), cap); driver.findElement(MobileBy.AndroidUIAutomator("")).click();

【讨论】:

【参考方案2】:

如果您使用 WebDriver 或 AppiumDriver 的引用变量,则需要将驱动程序向下转换为 AndriodDriver 才能访问 findElementByAndroidUIAutomator() 方法。因为这个方法是 AndriodDriver 特有的,在父类或接口中不可用。 例如:

WebDriver driver =  = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
((AndroidDriver) driver).findElementByAndroidUIAutomator("some expression").click();

注意:如果直接使用 AndroidDriver 的引用,则不需要这种向下转换。例如:

AndroidDriver<MobileElement> driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
driver.findElementByAndroidUIAutomator("some expression").click();

【讨论】:

【参考方案3】:

因为 findElementByAndroidUIAutomator 是 Java 8 以后支持的默认方法。请检查项目中的 Java 版本。将其更改为 1.8+。

Right click on the project -> Properties -> check JRE library version and Double click on JRE System library to change -> Change JRESE-1.8 

您将获得带有驱动程序对象的 findElementByAndroidUIAutomator。

【讨论】:

以上是关于找不到appium android驱动程序的findelementbyandroiduiautomator方法的主要内容,如果未能解决你的问题,请参考以下文章

原始错误:在 ["/usr/local/share/android-sdk/platform-tools/aapt"] Appium - Eclipse 中找不到“aapt”

在移动原生应用程序测试中:使用 Appium 时如何模拟后端?

在 appium 中找不到 web 元素

Appium 找不到findElementByAndroidUIAutomator方法问题

Appium 错误 Xcode 找不到匹配“com.facebook.WebDriverAgentRunner”的配置文件

找不到adb请设置ANDROID_HOME异常 - Visual Studio