未知错误:呼叫功能结果缺失'值'即使在chromedriver升级后,Selenium发送密钥也是如此

时间:2018-03-07 23:01:06

标签: python-2.7 google-chrome selenium selenium-webdriver webdriver

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

结果讯息:

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?

有什么想法吗?

17 个答案:

答案 0 :(得分:112)

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

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

答案 1 :(得分:22)


      将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更改日志上发现了最近的commit,这有助于我解决此问题。

<强>解决方案:

  • 将谷歌浏览器更新为最新的稳定版本(在我的情况下,它是在v8 / mar / 2018年的v65)
  • 下载并配置最新的chromedriver(v2.36)。 有关配置chromedriver(在Ubuntu上),请按照以下步骤操作...

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

export PATH = $ PATH:/ usr / local / bin

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

    chromedriver --version

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

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

     sudo find -H / -type f -iname chromedriver
    

答案 2 :(得分: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。

  3. 选项2更好。

答案 3 :(得分:12)

将ChromeDriver.exe替换为最新版本..可以从Google轻松下载。

另外,要自动完成,您可以使用webdriver manager,如下面链接所述 - What is Browser Binary Manager how to use it for Selenium

或参考git项目 - https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency

答案 4 :(得分:10)

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

答案 5 :(得分:8)

错误说明了一切:

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 = 65.0
  • ChromeDriver v2.37的发行说明明确提及以下内容:
  

支持 Chrome v64-66

  • 我们不知道您的 Selenium客户端版本。

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

解决方案

  • Selenium 升级到当前级别Version 3.11.0
  • ChromeDriver 升级到ChromeDriver v2.37级别。
  • Chrome v64.x-66.x 级别之间保留 Chrome 版本。 (as per ChromeDriver v2.37 release notes
  • 通过 IDE 清理您的项目工作区仅使用所需的依赖项重建项目
  • 使用CCleaner工具清除执行测试套件之前和之后的所有操作系统杂务。
  • 如果您的基本 Web浏览器/ Web客户端版本太旧,请通过Revo Uninstaller将其卸载并安装最新的GA和已发布的 Web浏览器/ Web客户端< / em>的
  • 执行@Test

答案 6 :(得分:5)

如果你在Mac上:

brew upgrade selenium-server-standalone
brew upgrade chromedriver

如果未安装以上两个:

brew install selenium-server-standalone
brew install chromedriver

答案 7 :(得分:3)

我正在运行Protractor并遇到了同样的问题。

我的案例中的解决方案相当简单。

$ npm update protractor -g

$ webdriver-manager update

答案 8 :(得分:2)

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

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

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

答案 9 :(得分: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')

答案 10 :(得分:0)

正如其他人所说,最新的chromedriver为我做了伎俩。如果您手动下载驱动程序并想告诉appium使用新的chromedriver,您可以通过以下命令执行此操作:

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

答案 11 :(得分:0)

如果这可能对某人有帮助,我还需要一个额外的步骤:

我在MacOS X上。我做了

brew upgrade chromedriver
bundle exec chromedriver-upgrade

我安装了chromedriver-helper gem,但它被隐藏并需要“bundle exec”前缀或shell无法找到命令。

以上解决了我的问题。

答案 12 :(得分:0)

在我的情况下,团队我在点硒到我们拥有的特定chromedriver文件。为了让Selenium使用更新的chromedriver,我首先使用brew安装它,然后创建一个符号链接指向Selenium寻找它:

STRSTARTS

答案 13 :(得分:0)

如果您使用的是gulp-protractor插件,请确保也进行更新。

答案 14 :(得分:0)

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

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

希望有人发现这有帮助。

答案 15 :(得分:0)

问题是由于chromedriver和chrome浏览器版本不匹配。 下面的链接指定支持chrome浏览器版本的chromedriver版本。

http://chromedriver.chromium.org/downloads

答案 16 :(得分:0)

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

  1. webdriver-manager update --versions.chrome="2.36"(这会将新的Chromedriver下载到正确的路径,但未在量角器中启用。)
  2. 修改%userprofile%\AppData\Roaming\npm\node_modules\protractor\config.json并将chromedriver值从2.32更改为2.36
  3. chromedriver_2.32.exe删除旧的%userprofile%\AppData\Roaming\npm\node_modules\protractor\selenium以获得良好的衡量标准(不确定是否需要)。
  4. 当需要另一个Chromedriver更新时,我无法再以这种方式更新。配置设置仍然需要旧的路径和文件名,我无法确定在哪里更改该设置。所以我只是将最新的chromedriver重命名为“chromedriver.exe”并将其粘贴在C:\ Windows \ system32(始终由PATH引用)中。原油,但有效。