UnsupportedCommandException:使用Appium的混合Android应用尚未实现方法错误

时间:2019-04-03 11:28:39

标签: java selenium appium hybrid-mobile-app appium-android

我正在使用Appium为混合Android应用程序编写自动化测试用例。 我使用下面的代码行将光标设置在下拉菜单/弹出窗口上:

Set<String> stringSet =  webDriver.getWindowHandles();

但是,这将产生以下错误:

org.openqa.selenium.UnsupportedCommandException: Method has not yet been implemented.

webdriver AppiumDriver 的对象。

这是 Hybrid (Cordova)移动应用

我的堆栈跟踪:

Apr 03, 2019 4:20:21 PM org.openqa.selenium.remote.ErrorCodes toStatus
INFO: HTTP Status: '404' -> incorrect JSON status mapping for 'unknown method' (405 expected)

org.openqa.selenium.UnsupportedCommandException: Method has not yet been implemented
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'VIKSHAH-M-F1AR', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.version: '1.8.0_152-release'
Driver info: io.appium.java_client.AppiumDriver

更新: 更新了JDK之后

Apr 10, 2019 12:47:45 PM org.openqa.selenium.remote.ErrorCodes toStatus
INFO: HTTP Status: '404' -> incorrect JSON status mapping for 'unknown method' (405 expected)

org.openqa.selenium.UnsupportedCommandException: Method has not yet been implemented
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'VIKSHAH2-M-F1AR', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.version: '1.8.0_202'
Driver info: io.appium.java_client.android.AndroidDriver

有人遇到过类似的问题吗? 还有其他方法可以使用Appium测试下拉列表吗?

3 个答案:

答案 0 :(得分:0)

此错误消息...

org.openqa.selenium.remote.ErrorCodes toStatus INFO: HTTP Status: '404' -> incorrect JSON status mapping for 'unknown method' (405 expected)
org.openqa.selenium.UnsupportedCommandException: Method has not yet been implemented Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03' System info: host: 'VIKSHAH-M-F1AR', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.version: '1.8.0_152-release' Driver info: io.appium.java_client.AppiumDriver

...表示 WebDriver 变体无法与所需的 WebElement 进行交互。

您的主要问题是所使用的二进制版本之间的不兼容性

  • 您的 Selenium Client 版本是最新版本的 2018-11-14T08:17:03 3.141.59 。 li>
  • 您的 JDK 版本是 1.8.0_152版本,该版本很旧古老

因此 Selenium Client v3.141.59 和JDK v1.8.0_152-release之间存在明显的不匹配。

解决方案

答案 1 :(得分:0)

是否启用了setWebContentsDebuggingEnabled属性?不幸的是,您的应用程序构建中还需要执行其他步骤。如Android远程调试文档中所述,必须将setWebContentsDebuggingEnabled元素上的android.webkit.WebView属性设置为true。

如果尚未启用,请在生成构建之前要求开发人员将其设置为true。

答案 2 :(得分:0)

下面是用于从可用上下文切换到第一个Web视图(非本地视图)的代码。如果不确定上下文文本实际上包含什么,请编写代码以捕获数组并显示所有值。

@Nullable
private String getWebContext() {
    ArrayList<String> contexts = new ArrayList<String>(driver.getContextHandles());
    for (String context : contexts) {
        if (!context.equals("NATIVE_APP")) {
            return context;
        }
    }
    return null;
}