Python - Firefox Selenium'预期的浏览器二进制位置,但无法在默认位置找到二进制文件'

时间:2017-01-07 05:05:57

标签: python selenium

所以我试图抓一个使用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有效?

1 个答案:

答案 0 :(得分:0)

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

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

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