【问题标题】:Python - Firefox Selenium 'Expected browser binary location, but unable to find binary in default location'Python - Firefox Selenium'预期的浏览器二进制位置,但无法在默认位置找到二进制文件'
【发布时间】:2017-01-07 05:05:56
【问题描述】:

所以我试图抓取一个使用 JavaScript 来显示一些文本的网站。我发现我应该使用 Selenium WebDrivers 而不是 requests.get(),所以我尝试使用 PhantomJS WebDriver,但是这不起作用,因为每当我尝试抓取该网站时,它都会成功抓取它,但该网站会生成 HTML大意是这样的:

<p>Could not find page</p>

所以我猜测由于某种原因 WebDriver 无法正常工作。我现在正在尝试使用 FireFox WebDriver -- Geckodriver。 .exe 的路径在我的 PATH 中,但是当我在 python 中运行此命令时

browser = webdriver.Firefox()

它吐出“在PATH中找不到指定的geckodriver.exe”的错误。因此,我在 Firefox() 中使用了 executable_path 参数,所以它看起来像这样:

browser = webdriver.Firefox(executable_path='path/to/geckodriver/')

当我现在运行它时,它会打开 geckodriver.exe(在 cmd 提示屏幕上不显示任何内容)并在 IDLE 中显示此错误:

WebDriverException: 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.

但是,当我尝试使用 ChromDriver 时,它可以正常工作。我不明白为什么这个有效而其他无效?

问题

  1. 为什么 PhantomJS 不工作?
  2. 为什么 GeckoDriver 不工作?
  3. 为什么 ChromeDriver 可以工作?

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    错误消息实际上是关于浏览器二进制文件,而不是关于geckodriver。尝试使用以下:

    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    binary = FirefoxBinary('path/to/firefox.exe')
    driver = webdriver.Firefox(firefox_binary=binary)
    

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 2021-09-22
      • 2018-03-31
      • 2020-11-04
      • 2021-03-02
      • 2021-05-06
      • 1970-01-01
      • 2022-06-29
      • 2021-03-26
      相关资源
      最近更新 更多