【问题标题】:Selenium on PyCharm cannot find firefox binaryPyCharm 上的 Selenium 找不到 firefox 二进制文件
【发布时间】:2021-04-23 17:19:56
【问题描述】:

这个最小的例子使用标准 python3 工作得很好 但它不会在 PyCharm 项目中运行。

from selenium import webdriver
browser = webdriver.Firefox(executable_path="PATHTODRIVER")
browser.get('https://www.google.com')

PyCharm 中显示的错误是:

selenium.common.exceptions.SessionNotCreatedException:消息:预期的浏览器二进制位置,但无法在默认位置找到二进制文件,没有提供“moz:firefoxOptions.binary”功能,并且在命令行上没有设置二进制标志

所以它没有找到我尝试指定的二进制位置。

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.binary_location = "/usr/bin/firefox"
browser = webdriver.Firefox(firefox_options=options, executable_path="PATHTODRIVER")
browser.get('https://www.google.com')

新的错误是

selenium.common.exceptions.InvalidArgumentException:消息:二进制不是 Firefox 可执行文件

我不太了解这个错误,所以我停止了进一步挖掘。 代码运行良好,使用

python3 test.py

为什么在 PyCharm 项目环境下不起作用?

【问题讨论】:

  • 1.您是否将 geckodriver 移至 usr/local/bin/?我认为你有,但我只是在检查。如果你没有输入 mv ~/Downloads/geckodriver /usr/local/bin. 2.你有没有试过去掉驱动的路径,只用webdriver.Firefox()?
  • @Insula 不,我已将其保存在项目文件夹中,我不想添加 PATH 或将 geckodriver 移动到 PATH 目录。由于它不包含在 PATH 中,因此代码在没有驱动程序路径的情况下无法运行
  • 我建议将geckodriver移到用户本地bin中,这样可以省去很多麻烦
  • @Insula 你可能是对的,但考虑到代码在没有 PyCharm 的情况下工作得很好,这应该不是问题。 geckodriver 也正确加载,因为它抱怨浏览器位置
  • 嗯,我明白了。我找到了这个 tutorial 对你有什么帮助。

标签: python selenium pycharm


【解决方案1】:

此错误消息...

selenium.common.exceptions.SessionNotCreatedException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line

...暗示GeckoDriver 无法在默认位置找到 二进制/可执行文件,并且您还没有提供moz:firefoxOptions.binary 功能。


解决方案

可能在您的系统中 Firefox 安装在自定义位置,在这些情况下,您需要传递 Firefox 二进制文件的 绝对路径通过moz:firefoxOptions.binary 能力如下:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.binary_location = '/usr/bin/firefox'
driver = webdriver.Firefox(executable_path=PATHTODRIVER, firefox_options=options)
driver.get('http://google.com/')

您可以在Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided using GeckoDriver找到相关的详细讨论


第二条错误信息...

selenium.common.exceptions.InvalidArgumentException: Message: binary is not a Firefox executable

...暗示您作为binary_location 属性传递的binary 文件不是有效的 可执行文件。

您需要传递 Firefox 可执行文件在系统中的任何位置的绝对位置。

您可以在InvalidArgumentException: Message: binary is not a Firefox executable error using GeckoDriver Firefox Selenium and Python找到相关的详细讨论

【讨论】:

    【解决方案2】:

    类似的事情也发生在我身上。 希望你能够解决这个问题,但如果不是这就是帮助我的原因。

    由于我使用的是 Pop_Os,因此 PyCharm 被安装为 FlatPack。我并没有真正接受这个想法,所以我卸载了 PyCharm 并使用官方 JetBrains Toolbox (https://www.jetbrains.com/toolbox-app/) 重新安装它。

    Firefox 和 Geckodriver 安装/复制到系统范围的路径。我的 PATH 变量设置为可以很好地看到它们:

    • /usb/bin/firefox
    • /usr/bin/geckodriver

    同时检查您的geckodriver.log 文件。我的位于 PyCharm 项目目录中。 此日志文件报此错误:Error: no DISPLAY environment variable specified

    可以通过adding environment variables to PyCharm修复。我刚刚启用了复选框以包含系统环境变量,它神奇地起作用了。 PyCharm Environment Variables Screenshot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-15
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 2014-01-23
      相关资源
      最近更新 更多