我正在使用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测试下拉列表吗?
答案 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 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;
}