为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2019-07-04 16:49:18
Firefox更新后无法使用Selenium打开浏览器我在UbuntuDesktop 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.
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

从Firefox47.0版本(它刚刚发布了一段时间)开始,必须使用一个新的驱动程序(由Mozilla而不是Selenium创建)来连接到Firefox,因为这个版本引入了一个bug。从Firefox48.0版本开始,旧的驱动程序将被完全废弃,只能使用Marionette,所以现在切换比较好。见:火狐的木偶网络驱动程序

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

使用本地Web驱动程序时:

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = Truedriver = webdriver.Firefox(capabilities=firefox_capabilities)

红宝石:

driver = Selenium::WebDriver.for :firefox, marionette: true

JavaScript:

var capabilities = Capabilities.firefox();capabilities.set('marionette', true);
var driver = new webdriver.Builder().withCapabilities(capabilities).build();

Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();capabilities.setCapability("marionette", true);
Webdriver driver = new FirefoxDriver(capabilities);

C#:

var driver = new FirefoxDriver(new FirefoxOptions());

使用Selenium网格时:

当使用Selenium网格时,驱动程序应该出现在网格中所有机器的路径中。

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = Truedriver = webdriver.Firefox(capabilities=firefox_capabilities)

红宝石:

caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true
driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps

Java:

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

C#:

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


查看完整回答
反对 回复 2019-07-04
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

固定:此时的解决方案是降级Firefox!运行此命令以获得可用Firefox版本的列表。

apt-cache show firefox | grep Version

我的结果是:

Version: 47.0+build3-0ubuntu0.16.04.1
Version: 45.0.2+build1-0ubuntu1

安装:

sudo apt-get install firefox=45.0.2+build1-0ubuntu1

若要保留此版本并不允许更新,请执行以下操作:

sudo apt-mark hold firefox

如果您想要取消Firefox版本并允许更新:

sudo apt-mark unhold firefox
sudo apt-get upgrade


查看完整回答
反对 回复 2019-07-04
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

有些人的问题是buttonS或select无法在marionette手法。

另一种选择是使用旧版本的Firefox:

您可以下载二进制文件。这里在这里使用:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

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


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 1320 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信