未知错误:调用函数结果缺少'value'Appium Hybrid App

时间:2018-03-13 09:48:55

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

发送密钥到某个字段

时我有问题
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

3 个答案:

答案 0 :(得分:2)

错误说明了一切:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我找到了一个解决方案,如何解决将Chrome驱动程序更新为2.36的问题 这是下载chromedriver版本,并找出chromedriver"版本的chromedriver"这是由Appium采取的 路径是

C:\Users\Rosen\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe

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