未知错误:调用函数结果缺少’值’Appium Hybrid App
在向某些字段发送密钥时我有问题
driver.findElement(By.xpath("//*[@id=\"login-main\"]/a")).click(); Thread.sleep(1000); driver.findElement(By.xpath("/html/body/div[2]/ion-nav-view/ion-view/login-popup/ion-pane/ion-content/div/form/label[2]/input")).sendKeys("Example");
我将上下文设置为“driver.context(”WEBVIEW _ ********“);”,我可以单击应用程序中的按钮,但是无法将键放入字段中,它会在第一次发生,上周它正在工作。 错误是:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing 'value' (Session info: chrome=65.0.3325.109) (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
我尝试在CMD中使用“npm install -g chromedriver”更新chromeDriver,但chromeDriver没有更新到2.36这是最新版本。 我查了另外一个问题,他们有同样的问题,但我认为问题是我无法更新chromeDriver
错误说明了一切:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing 'value (Session info: chrome=65.0.3325.109) (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64)
您的主要问题是您使用的二进制文件之间的版本兼容性如下:
- 您正在使用chromedriver = 2.33
- chromedriver发行说明= 2.33明确提到以下内容:
支持Chrome v60-62
- 您正在使用chrome = 65.0
- ChromeDriver v2.36的发行说明明确提到以下内容:
支持Chrome v65-66
- 您的Selenium客户端版本对我们来说不了解。
- 您的JDK版本对我们来说不了解。
因此, ChromeDriver版本( v2.33 )与Chrome浏览器版本( v65.0 )之间存在明显的不匹配
解
- 将JDK升级到最新级别JDK 8u162 。
- 将Selenium升级到当前级别版本3.11.0 。
- 将ChromeDriver升级到ChromeDriver v2.36级别。
- 将Chrome版本保持在Chrome v65.x级别。 ( 根据ChromeDriver v2.36发行说明 )
- 通过IDE 清理 Project Workspace ,并仅使用所需的依赖项重建项目。
- 使用CCleaner工具在执行测试套件之前和之后擦除所有操作系统。
- 如果您的基本Chrome版本太旧,请通过Revo Uninstaller将其卸载并安装最新的GA和已发布的Chrome版本。
- 执行你的
@Test
。
更新:
根据您的评论,如果您无法升级到ChromeDriver v2.36 ,则可以采用以下任一策略:
- 保持chromedriver = 2.33,但降级到Chrome v60-62
- 升级chromedriver = 2.34并降级至Chrome v61-63
- 升级chromedriver = 2.35并降级至Chrome v62-64
因此,不确定您使用什么路由来管理驱动程序,但是您需要将–chromedriver-executable参数传递给您的appium运行。 我假设一个新的appium版本或appium-chromdriver npm包将在某个时候发布,但在此之前,请尝试以下方法:
如果你通过命令行启动appium,这就像运行一样简单: appium --chromedriver-executable=/path/to/chromedriver.exe
(指向2.36 chromedriver可执行文件)
如果你使用AppiumServiceBuilder实例启动appium,你需要添加: serviceBuilderInstance..withArgument((ServerArgument) () -> "--chromedriver-executable", chromeExecutablePath);
希望这有帮助,它似乎对我有用!
我找到了一个解决方案,如何解决将Chrome驱动程序更新为2.36的问题。下载chromedriver版本,找出Appium采用的“chromedriver版本”的路径是
C:\Users\Rosen\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe
并使用新版本进行更改,以便解决问题并停止告诉我存在问题。