Firefox更新后无法用Selenium打开浏览器

Ale*_*ian 38 browser firefox selenium webdriver

我在Ubuntu Desktop 16.04上使用Selenium WebDriver,我无法打开浏览器.Firefox更新后出现以下错误(在此之前,一切正常):

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    driver = webdriver.Firefox()
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 81, in __init__
    self.binary, timeout)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 51, in __init__
    self.binary.launch_browser(self.profile, timeout=timeout)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser
    self._wait_until_connectable(timeout=timeout)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 98, in _wait_until_connectable
    raise WebDriverException("The browser appears to have exited "
selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.
Run Code Online (Sandbox Code Playgroud)

Mob*_*ers 60

从Firefox 47.0版本开始(稍微出版),必须使用新的驱动程序(由mozilla而不是selenium创建)连接到Firefox,因为此版本中引入了一个错误.从Firefox 48.0开始,旧的驱动程序将被完全弃用,只能使用Marionette,所以现在切换更好.请参阅:适用于Firefox的Marionette Webdriver

下载驱动程序(在OSX中使用brew install geckodriver),将可执行文件重命名为wires.exeWindows或wires*nix系统,并确保系统路径中存在可执行文件,然后在程序中使用此驱动程序而不是使用旧驱动程序以下:

使用本地webdriver时:

蟒蛇:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

driver = webdriver.Firefox(capabilities=firefox_capabilities)
Run Code Online (Sandbox Code Playgroud)

红宝石:

driver = Selenium::WebDriver.for :firefox, marionette: true
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

var capabilities = Capabilities.firefox();
capabilities.set('marionette', true);

var driver = new webdriver.Builder().withCapabilities(capabilities).build();
Run Code Online (Sandbox Code Playgroud)

Java的:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
Webdriver driver = new FirefoxDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)

C#:

var driver = new FirefoxDriver(new FirefoxOptions());
Run Code Online (Sandbox Code Playgroud)

使用硒网格时:

使用硒网格时,驱动程序应存在于网格中所有计算机的路径中.

蟒蛇:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities)
Run Code Online (Sandbox Code Playgroud)

红宝石:

caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true
driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps
Run Code Online (Sandbox Code Playgroud)

Java的:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.setCapability("marionette", true);

WebDriver driver = new RemoteWebDriver(capabilities); 
Run Code Online (Sandbox Code Playgroud)

C#:

DesiredCapabilities capabilities = DesiredCapabilities.Firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.SetCapability("marionette", true);

var driver = new RemoteWebDriver(capabilities); 
Run Code Online (Sandbox Code Playgroud)

  • 对于懒惰的OSX用户:`brew install geckodriver` (2认同)

Ale*_*ian 11

修复:此时的解决方案是降级Firefox!运行此命令以获取可用的Firefox版本列表.

apt-cache show firefox | grep Version
Run Code Online (Sandbox Code Playgroud)

我的结果:

Version: 47.0+build3-0ubuntu0.16.04.1
Version: 45.0.2+build1-0ubuntu1
Run Code Online (Sandbox Code Playgroud)

安装:

sudo apt-get install firefox=45.0.2+build1-0ubuntu1
Run Code Online (Sandbox Code Playgroud)

要保留此版本并禁止更新:

sudo apt-mark hold firefox
Run Code Online (Sandbox Code Playgroud)

如果你想要解锁firefox版本并允许更新:

sudo apt-mark unhold firefox
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)


Moh*_*ter 10

解决方案:将Firefox升级到47.0.1,将Selenium升级到2.53.1.

这种组合对我有用.

有关更多详细信息,请参阅/sf/answers/2641006161/