【问题标题】:Unknown error: call function result missing 'value' Appium Hybrid App未知错误:调用函数结果缺少“值”Appium Hybrid App
【发布时间】:2018-03-13 22:35:52
【问题描述】:

向某个字段发送密钥时遇到问题

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

【问题讨论】:

  • 在这里也看到了同样的问题。周五看到这个。此外,这个或类似的东西似乎也阻止了我们使用 chrome 中的调试器来调试我们的混合应用程序的内容。
  • 似乎升级 chromedriver 似乎也没有帮助。刚刚设法让我的使用 npm install -g chromedriver 升级到 2.36,但仍然遇到同样的问题。

标签: java selenium selenium-webdriver appium selenium-chromedriver


【解决方案1】:

错误说明了一切:

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升级到当前级别Version 3.11.0
  • ChromeDriver升级到ChromeDriver v2.36级别。
  • Chrome 版本保持在 Chrome v65.x 级别。 (as per ChromeDriver v2.36 release notes)
  • 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。
  • 使用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

【讨论】:

  • 好吧,我不能在 Appium 中将 ChromeDriver 升级到 v2.36,或者至少它没有说它升级到 2.36 ... JDK 是最新的,但是如果我想在 Chrome 中使用调试器我必须有最新版本
  • 我想我设法根据 CMD "ChromeDriver 2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91) " 更新了 chromeDriver 但是当我运行代码时: (Session info: chrome=65.0.3325.109) (Driver info: chromedriver =2.33.506120 即使我在PC上更改了Chrome版本,崩溃后Appium信息中也没有更改,chromeDriver或GoogleChrome驱动程序上没有更改
  • 我遇到了同样的事情。我不知道为什么 appium 决定打包旧版本的 chromedriver。
【解决方案2】:

因此,不确定您使用什么路由来管理驱动程序,但您需要将 --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);

希望这会有所帮助,它似乎对我有用!

【讨论】:

  • 好吧,我使用 appium-desktop-setup-1.4.0 。我使用“automationtestinghub.com/appium-tutorial”来安装 Appium 并进行设置,直到上周它都运行良好。我更新了 chromeDriver ,因为 CMD 中的系统告诉我它的 2.36 但是当我运行代码时它一直说它的 2.33
【解决方案3】:

我找到了一个解决方案,如何解决将 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

并用新版本更改它,这样它就可以解决问题并停止告诉我有问题。

【讨论】:

    猜你喜欢
    • 2018-07-14
    • 2018-08-16
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2018-09-01
    相关资源
    最近更新 更多