Selenium WebDriverException:未知错误:使用Java调用函数结果缺少'value'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium WebDriverException:未知错误:使用Java调用函数结果缺少'value'相关的知识,希望对你有一定的参考价值。

当我尝试在java中使用selenium webdriver运行我的第一个测试用例时,我得到以下异常。有人可以帮我解决问题.....

Starting ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) on port 48523
Only local connections are allowed.
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Mar 29, 2018 7:34:16 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing 'value'
(Session info: chrome=65.0.3325.181)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.3.9600 x86_64) (WARNING: The server did not provide any     stacktrace information)
Command duration or timeout: 31 milliseconds
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'NIL-MKODAGA-D13', ip: '172.16.20.242', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '9.0.1'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome=    {chromedriverVersion=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f), userDataDir=C:UsersmkodaganAppDataLocalTempscoped_dir4652_10811},    takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=65.0.3325.181, platform=WIN8_1,   browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome,    takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}]
Session ID: 1a39885769cc96406e2f2732c361c049
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:671)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:272)
    at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:96)
    at com.ham.scripts.ClickOnAllLinks.main(ClickOnAllLinks.java:44)
答案

错误说明了一切:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing 'value'
(Session info: chrome=65.0.3325.181)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.3.9600 x86_64) 
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'NIL-MKODAGA-D13', ip: '172.16.20.242', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '9.0.1'
Driver info: org.openqa.selenium.chrome.ChromeDriver

该错误清楚地表明Selenium Client和ChromeDriver未被检测到,如:

Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'  
Driver info: org.openqa.selenium.chrome.ChromeDriver

您的主要问题是您使用的二进制文件之间的版本兼容性如下:

  • 您正在使用chromedriver = 2.33
  • chromedriver=2.33的发行说明明确提到以下内容:

支持Chrome v60-62

  • 您正在使用chrome = 65.0
  • ChromeDriver v2.37的发行说明明确提到以下内容:

支持Chrome v64-66

  • 您的Selenium客户端版本是3.4.0,其中有点旧。

因此,Selenium Client v3.4.0,ChromeDriver版本(v2.33)和Chrome浏览器版本(v65.0)之间明显不匹配

  • 将Selenium升级到当前水平Version 3.11.0
  • 将ChromeDriver升级到当前的ChromeDriver v2.37级别。
  • 将Chrome版本保持在Chrome v65.x级别。 (as per ChromeDriver v2.37 release notes
  • 通过IDE清理项目工作区,并仅使用所需的依赖项重建项目。
  • 使用CCleaner工具在执行测试套件之前和之后擦除所有操作系统。
  • 如果您的基本Web客户端版本太旧,请通过Revo Uninstaller卸载它并安装最新的GA和发布的Web客户端版本。
  • 进行系统重启。
  • 执行你的@Test
另一答案

正如@DebanjanB所提到的,问题在于chromedriver版本。从日志中你可以看到它使用chromedriver = 2.33.506120,这有点旧。检查“https://sites.google.com/a/chromium.org/chromedriver/downloads”的最新版本。

我也遇到了同样的问题,通过更新chrome驱动程序可以解决问题。您可以使用以下方法来解决它。

  1. 运行npm install -g chromedriver
  2. 手动更新chromedriver,我发现appium使用的chromedriver位于以下位置。 C:用户用户名 AppData 本地 appium桌面 APP-1.5.0 资源程序 node_modules appium node_modules appium-chromedriver chromedriver 胜利。

将此chromedriver替换为最新的chromedriver并运行您的代码。它应该工作正常。

注意:该位置可能是特定于操作系统的,因此请搜索chromedriver确切位置。

以上是关于Selenium WebDriverException:未知错误:使用Java调用函数结果缺少'value'的主要内容,如果未能解决你的问题,请参考以下文章

Selenium-IDE,Selenium-RC ,Selenium grid以及 Selenium-Core

selenium是啥?

Python爬虫 Selenium -- Selenium元素定位Selenium访问元素信息Selenium交互

Selenium学习Selenium 总结

Selenium - 简介

java selenium selenium 介绍