未知错误:即使在chromedriver升级后,Selenium Send Keys的调用函数结果也缺少“值”


110

发送密钥时出现以下错误。

结果消息:

System.InvalidOperationException : unknown error: call function result missing 'value'
  (Session info: chrome=65.0.3325.146)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.14393 x86_64)

我已经将chrome驱动程序更新为2.36,但是我的代码仍在搜索2.33吗?

任何想法 ?


自昨天以来,这里同样存在问题。就我而言,我认为问题是无头铬v65 +硒驱动器v2.34的组合(changelog说它与铬v61-63兼容)
豪尔赫·阿雷瓦洛(

Answers:


115

我遇到了同样的错误,请下载最新的ChromeDriver版本和/或更新chrome浏览器版本,它将正常运行:)

https://chromedriver.storage.googleapis.com/index.html?path=2.36/


1
我已经下载了它,并将其称为Nuget,并删除了对2.33的所有引用,但是仍然可以连接到旧的2.33一个?
扎基·艾哈迈德

2
我下载了最新的chromedriver 2.36,但它仍然无法与Chrome版本65.0.3325.146(正式版本)(64位)一起使用,至少在Mac OS上:(
neliCZka

2
抱歉,我实际上配置了错误的路径,将其链接到新的chromedriver后,我的脚本现在可以正常工作了。我正在使用Windows机器。
克里夫·丘

6
如果您使用的是github.com/flavorjones/chromedriver-helper gem,请在控制台中运行chromedriver-update 2.36
Bachet

4
如果您使用Homebrew,则可以执行brew upgrade chromedriver
Diego Carrion,

23


将Google Chrome浏览器更新为65.0.3325.146版(正式版本)(64位)后,在将值发送到输入字段时也遇到了相同的错误,这是错误消息...

selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing 'value'

使用Chromedriver 2.32和Google Chrome 65.0

当我对它进行一些研究时,我发现最近对Google chrome v65更改日志进行了提交,这有助于我解决此问题。

解:

  • 将Google Chrome更新到最新的稳定版本(在我的情况下是2018年3月9日为v65)
  • 下载并配置最新的chromedriver(v2.36)。要配置chromedriver(在Ubuntu上),请按照以下步骤操作...

    1. 解压缩下载的zip文件。
    2. 将提取的chromedriver文件复制到/ usr / local / bin或通常存储可执行二进制文件的位置。
    3. 将与环境变量PATH相同的路径(放置chromedriver文件的位置)添加为

导出PATH = $ PATH:/ usr / local / bin

  1. 要测试安装,请重新启动终端并键入以下命令

chromedriver --version

它会显示您刚安装的chromedriver版本。

注意: 如果已经安装并配置了chromedriver,则只需替换现有的驱动程序文件,如果您不知道Chromedriver二进制文件的存储位置,请尝试使用以下命令查找文件

 sudo find -H / -type f -iname chromedriver

13

这是因为Chrome浏览器版本从64.xx更新到65.xx

现在,您有2个选项可以成功运行测试。

  1. 将chrome浏览器降级到以前的版本,并使用现在拥有的旧chromedriver降级。

  2. 使用更新的Chrome浏览器将您的Chromedriver升级到2.36版本。

    访问https://chromedriver.storage.googleapis.com/index.html?path=2.36并下载新的chromedriver。

选项2更好。


我在以下环境中:Ubuntu 16.04,GoogleChrome 65.0.3325.146,ChromeDriver 2.36.540471。而且我仍然得到上面的确切错误。我需要更改什么?错误,但是说我正在使用chromedriver版本2.33.506092 ...
Armin

您需要提及更新的chromedriver的确切路径,而不是旧的。或用新的旧chromedriver替换。只是检查一下。
Deepak N

如果有人在Visual Studio中遇到此错误,则将chrome Web驱动程序Nuget软件包升级到2.37(在撰写本文时)将解决此错误。
Gunarathinam '18

12

用最新版本替换您的ChromeDriver.exe。可以从Google轻松下载相同版本。

如下所述,最好通过使用webDriver管理器自动完成此操作-1.将Mvn依赖项添加到项目POM中:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>${webdrivermanager.version}</version>
    <scope>test</scope>
</dependency>
  1. 现在,在浏览器实例化类中,而不是使用传统方式来创建驱动程序,即通过使用System.setProperty(请参见belwo)...

    System.setProperty(“ webdriver.chrome.driver”,“ src / test / resources / drivers / chromedriver.exe”);

使用以下方法:

WebDriverManager.chromedriver()。setup();
webDriver =新的ChromeDriver(chromeOptions);

至此,您就完成了!

使用下面的链接供参考- 什么是Browser Binary Manager如何将其用于Selenium

或相同的chkout git项目-https ://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency


3
这对我有用
Reily Bourne

是的,现在最新的是-ChromeDriver 2.38-chromedriver.chromium.org/downloads
Satyendra Sharma

10

需要更新chromedriver:在控制台中,运行: chromedriver-update 2.36


9

错误说明了一切:

System.InvalidOperationException : unknown error: call function result missing 'value'
  (Session info: chrome=65.0.3325.146)
  (Driver info: chromedriver=2.33.506120

该错误显然抱怨InvalidOperationException

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

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

支持Chrome v60-62

支持Chrome v64-66

  • 我们不知道您的Selenium Client版本。

因此,ChromeDriver版本(v2.33)与Chrome浏览器版本(v65.0)之间存在明显的不匹配

  • Selenium升级到当前版本3.11.0
  • 升级ChromeDriverChromeDriver v2.37水平。
  • Chrome版本保持在Chrome v64.x-66.x之间。(根据ChromeDriver v2.37发行说明
  • 清理你的项目工作,通过你的IDE重建仅需要依赖你的项目。
  • 在执行测试套件之前和之后,使用CCleaner工具清除所有操作系统琐事。
  • 如果您的基本Web浏览器/ Web客户端版本太旧,请通过Revo卸载程序将其卸载,并安装最新的GA和Web浏览器/ Web客户端的发行版本。
  • 执行您的@Test

5

如果您使用的是Mac:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

如果未安装以上两个:

brew install selenium-server-standalone
brew install chromedriver

3

我正在运行量角器,并且遇到了相同的问题。

就我而言,解决方案非常简单。

$ npm update protractor -g

$ webdriver-manager update


如果您使用的是gulp-protractor插件,请确保也进行更新。
伊利亚·维诺格拉多夫

2

如果您使用的是最新的稳定版Google Chrome(例如67),建议您:

brew uninstall chromedriver
brew tap homebrew/cask
brew cask install chromedriver

这些命令集将卸载您当前的chromedriver,检查更新并安装最新的(例如2.40)。


很高兴它有所帮助!
S. Esteves '18

1
Use xpaths instead of class names to locate elements

更新了chrome及其驱动程序后,它对我没有任何帮助!我不知道这有什么意义,但是当我用xpath替换类名时,它对我有用。这是xpath,我曾经使用python自动发送whatsapp消息。

driver.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div')

以前我在用

driver.find_element_by_class_name('Some class Name Here')

0

就我而言,我所在的团队将硒指向我们拥有的特定chromedriver文件。为了让Selenium使用更新的chromedriver,我首先在brew中安装了它,然后创建了一个符号链接,指向Selenium在哪里寻找它:

brew install chromedriver
ln -s /usr/local/Cellar/chromedriver/2.36/bin/chromedriver /path/where/selenium/expects/chromedriver

0

碰巧这可能对我需要其他步骤的人有所帮助:

我在MacOS X上。

brew upgrade chromedriver
bundle exec chromedriver-upgrade

我安装了chromedriver-helper gem,但是已藏起来,并且需要“ bundle exec”前缀,否则shell无法找到该命令。

以上解决了我的问题。


0

正如其他人所提到的,最新的chromedriver为我实现了成功。如果您手动下载了驱动程序,并想告诉appium使用新的chromedriver,则可以通过以下命令进行操作:

appium --chromedriver-executable /path/to/driver/chromedriver ....


0

我在Windows环境中使用Selenium运行量角器(webdriver-manager),我必须执行以下操作:

  1. webdriver-manager update --versions.chrome="2.36" (这会将新的Chromedriver下载到正确的路径,但未在量角器中启用它。)
  2. 编辑%userprofile%\AppData\Roaming\npm\node_modules\protractor\config.json并将chromedriver值从更改2.322.36
  3. 删除我的旧chromedriver_2.32.exe%userprofile%\AppData\Roaming\npm\node_modules\protractor\selenium好措施(如果不能肯定是要求。)

要么:

当需要再次更新Chromedriver时,我不再能够以这种方式进行更新。配置设置仍然希望使用旧的路径和文件名,并且我不知道要在哪里更改该设置。因此,我只是将最新的chromedriver重命名为“ chromedriver.exe”,并将其粘贴在C:\ Windows \ system32(始终由PATH引用)中。粗暴,但有效。



0

我不知道您是否还在进行此操作,但是我收到了类似的错误消息。我在PATH中安装了最新版本的chromedriver,并且Google Chrome已更新。我在Windows 10 x64位上运行Python 3.6。我正在尝试从网页的下拉菜单中选择一个值。奇怪的是,它将正确选择下拉列表值,并且页面会被很好地更新,但是无论如何我都会收到该愚蠢的错误,并且我的脚本将冻结。所以我只是为其创建了一个异常错误处理程序,因为就像我说的那样,它正确选择了下拉值,所以我只想绕过那个愚蠢的错误消息:

# select by value
try:
    select.select_by_value('100')
except:
    pass

希望有人觉得这有帮助。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.