未知错误:调用函数结果缺少’值’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 

并使用新版本进行更改,以便解决问题并停止告诉我存在问题。