连接被拒绝并且轮询更改失败:尝试使用 Selenium GeckoDriver 和 Firefox 获取资源时出现 NetworkError
Connection Refused and Polling for changes failed: NetworkError when attempting to fetch resource error with Selenium GeckoDriver and Firefox
如标题所示,现在,firefox打开,似乎什么都没做,然后就消失了!
- 我之前在本地 ubuntu 16.04 虚拟机上 运行 进行过此操作,一切正常。
(是的,我已经升级到最新的selenium等,如下:
硒 3.141.0
碎片 0.10.0
六个 1.12.0
urllib3 1.25.3)
现在,geckodriver.log 显示以下内容:
1559646629845 geckodriver INFO Listening on 127.0.0.1:60172
1559646630836 mozprofile::profile INFO Using profile path /tmp/rust_mozprofile.5DqFww40mZ6W
1559646630851 geckodriver::marionette INFO Starting browser /usr/bin/firefox
1559646630857 geckodriver::marionette INFO Connecting to Marionette on localhost:46681
1559646631959 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons
1559646631960 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/
1559646631960 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader*
1559646637156 Marionette INFO Listening on port 2828
console.error: BroadcastService:
receivedBroadcastMessage: handler for
remote-settings/monitor_changes
threw error:
Message: Error: Polling for changes failed: NetworkError when attempting to fetch resource..
Stack:
remoteSettingsFunction/remoteSettings.pollChanges@resource://services-settings/remote-settings.js:190:13
JavaScript error: jar:file:///usr/lib/firefox/omni.ja!/components/nsUrlClassifierListManager.js, line 329: NS_ERROR_NOT_INITIALIZED: Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIUrlClassifierDBService.getTables]
JavaScript error: jar:file:///usr/lib/firefox/omni.ja!/components/nsUrlClassifierListManager.js, line 329: NS_ERROR_NOT_INITIALIZED: Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIUrlClassifierDBService.getTables]
1559646742440 Marionette INFO Stopped listening on port 2828ss
我也在远程 ubuntu-16.04 VM(没有 GUI)上尝试过,控制台显示相同的 "connection refused" 消息,但这次 geckodriver.log 显示了不同的问题,如下所示:
(硒 3.141.0
六个 1.12.0
碎片 0.10.0
urllib3 1.25.3)
1559563047915 geckodriver INFO geckodriver 0.18.0
1559563047918 geckodriver INFO Listening on 127.0.0.1:51758
1559563049045 geckodriver::marionette INFO Starting browser /usr/bin/firefox with args ["-marionette"]
MobaXterm X11 proxy: Unsupported authorisation protocol
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Broadway display type not supported: localhost:11.0
Error: cannot open display: localhost:11.0
1559644244502 geckodriver INFO geckodriver 0.18.0
1559644244506 geckodriver INFO Listening on 127.0.0.1:53086
1559644245634 geckodriver::marionette INFO Starting browser /usr/bin/firefox with args ["-marionette"]
MobaXterm X11 proxy: Unsupported authorisation protocol
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Broadway display type not supported: localhost:10.0
Error: cannot open display: localhost:10.0
我的测试代码是:
from splinter import Browser
browser = Browser()
browser.visit( 'https://www.google.com' )
browser.fill( 'q', 'splinter - python acceptance testing for web application' )
browser.quit()
我很高兴有类似的问题发布到 "connection refused" type issues with selenium...我希望找到一个特定于 python 的解决方案,在我看来是 'network issue' 或 'display issue'...
这个错误信息...
1559646629845 geckodriver INFO Listening on 127.0.0.1:60172
1559646630836 mozprofile::profile INFO Using profile path /tmp/rust_mozprofile.5DqFww40mZ6W
1559646630851 geckodriver::marionette INFO Starting browser /usr/bin/firefox
1559646630857 geckodriver::marionette INFO Connecting to Marionette on localhost:46681
1559646631959 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons
1559646637156 Marionette INFO Listening on port 2828
console.error: BroadcastService:
receivedBroadcastMessage: handler for
remote-settings/monitor_changes
threw error:
Message: Error: Polling for changes failed: NetworkError when attempting to fetch resource..
Stack:
remoteSettingsFunction/remoteSettings.pollChanges@resource://services-settings/remote-settings.js:190:13
JavaScript error: jar:file:///usr/lib/firefox/omni.ja!/components/nsUrlClassifierListManager.js, line 329: NS_ERROR_NOT_INITIALIZED: Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIUrlClassifierDBService.getTables]
1559646742440 Marionette INFO Stopped listening on port 2828s
...意味着 GeckoDriver 无法 initiate/spawn 新的 WebBrowsing Session 即 Firefox 浏览器 会话。
您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:
- 您的 GeckoDriver 版本 geckodriver v0.18.0。 (根据第二组日志的第一行 ...geckodriver INFO geckodriver 0.18.0...)
- 您的 Selenium Client 版本是 3.141.0.
- 我们不知道您的 Firefox 版本。
因此 GeckoDriver v0.18.0 Selenium Client v3.141.0.
之间存在明显的不匹配
解决方案
- 将 Selenium 升级到当前级别 Version 3.141.59。
- 将 GeckoDriver 升级到最新的 GeckoDriver v0.24.0 级别。
- 确保 GeckoDriver 存在于所需位置。
- GeckoDriver 拥有 non-root 用户的可执行权限。
- 将 Firefox 升级到当前的 Firefox v65.0.2 级别。
- 通过 IDE 和 [=34] 清理 您的 项目工作区 =]重建你的项目只需要依赖。
- 如果您的基本 Web Client 版本太旧,则卸载它并安装最新的 GA 和发布版本的 Web Client。
- 始终在
tearDown(){}
方法中调用 driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.
Note: Always maintain the following GeckoDriver, Selenium and Firefox Browser compatibility matrix
You can find a relevant detailed discussionin Which Firefox browser versions supported for given Geckodriver version?
结尾
如标题所示,现在,firefox打开,似乎什么都没做,然后就消失了!
- 我之前在本地 ubuntu 16.04 虚拟机上 运行 进行过此操作,一切正常。
(是的,我已经升级到最新的selenium等,如下: 硒 3.141.0 碎片 0.10.0 六个 1.12.0 urllib3 1.25.3) 现在,geckodriver.log 显示以下内容:
1559646629845 geckodriver INFO Listening on 127.0.0.1:60172
1559646630836 mozprofile::profile INFO Using profile path /tmp/rust_mozprofile.5DqFww40mZ6W
1559646630851 geckodriver::marionette INFO Starting browser /usr/bin/firefox
1559646630857 geckodriver::marionette INFO Connecting to Marionette on localhost:46681
1559646631959 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons
1559646631960 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/
1559646631960 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader*
1559646637156 Marionette INFO Listening on port 2828
console.error: BroadcastService:
receivedBroadcastMessage: handler for
remote-settings/monitor_changes
threw error:
Message: Error: Polling for changes failed: NetworkError when attempting to fetch resource..
Stack:
remoteSettingsFunction/remoteSettings.pollChanges@resource://services-settings/remote-settings.js:190:13
JavaScript error: jar:file:///usr/lib/firefox/omni.ja!/components/nsUrlClassifierListManager.js, line 329: NS_ERROR_NOT_INITIALIZED: Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIUrlClassifierDBService.getTables]
JavaScript error: jar:file:///usr/lib/firefox/omni.ja!/components/nsUrlClassifierListManager.js, line 329: NS_ERROR_NOT_INITIALIZED: Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIUrlClassifierDBService.getTables]
1559646742440 Marionette INFO Stopped listening on port 2828ss
我也在远程 ubuntu-16.04 VM(没有 GUI)上尝试过,控制台显示相同的 "connection refused" 消息,但这次 geckodriver.log 显示了不同的问题,如下所示: (硒 3.141.0 六个 1.12.0 碎片 0.10.0 urllib3 1.25.3)
1559563047915 geckodriver INFO geckodriver 0.18.0 1559563047918 geckodriver INFO Listening on 127.0.0.1:51758 1559563049045 geckodriver::marionette INFO Starting browser /usr/bin/firefox with args ["-marionette"] MobaXterm X11 proxy: Unsupported authorisation protocol Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Broadway display type not supported: localhost:11.0 Error: cannot open display: localhost:11.0 1559644244502 geckodriver INFO geckodriver 0.18.0 1559644244506 geckodriver INFO Listening on 127.0.0.1:53086 1559644245634 geckodriver::marionette INFO Starting browser /usr/bin/firefox with args ["-marionette"] MobaXterm X11 proxy: Unsupported authorisation protocol Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Broadway display type not supported: localhost:10.0 Error: cannot open display: localhost:10.0
我的测试代码是:
from splinter import Browser
browser = Browser()
browser.visit( 'https://www.google.com' )
browser.fill( 'q', 'splinter - python acceptance testing for web application' )
browser.quit()
我很高兴有类似的问题发布到 "connection refused" type issues with selenium...我希望找到一个特定于 python 的解决方案,在我看来是 'network issue' 或 'display issue'...
这个错误信息...
1559646629845 geckodriver INFO Listening on 127.0.0.1:60172
1559646630836 mozprofile::profile INFO Using profile path /tmp/rust_mozprofile.5DqFww40mZ6W
1559646630851 geckodriver::marionette INFO Starting browser /usr/bin/firefox
1559646630857 geckodriver::marionette INFO Connecting to Marionette on localhost:46681
1559646631959 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons
1559646637156 Marionette INFO Listening on port 2828
console.error: BroadcastService:
receivedBroadcastMessage: handler for
remote-settings/monitor_changes
threw error:
Message: Error: Polling for changes failed: NetworkError when attempting to fetch resource..
Stack:
remoteSettingsFunction/remoteSettings.pollChanges@resource://services-settings/remote-settings.js:190:13
JavaScript error: jar:file:///usr/lib/firefox/omni.ja!/components/nsUrlClassifierListManager.js, line 329: NS_ERROR_NOT_INITIALIZED: Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIUrlClassifierDBService.getTables]
1559646742440 Marionette INFO Stopped listening on port 2828s
...意味着 GeckoDriver 无法 initiate/spawn 新的 WebBrowsing Session 即 Firefox 浏览器 会话。
您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:
- 您的 GeckoDriver 版本 geckodriver v0.18.0。 (根据第二组日志的第一行 ...geckodriver INFO geckodriver 0.18.0...)
- 您的 Selenium Client 版本是 3.141.0.
- 我们不知道您的 Firefox 版本。
因此 GeckoDriver v0.18.0 Selenium Client v3.141.0.
之间存在明显的不匹配解决方案
- 将 Selenium 升级到当前级别 Version 3.141.59。
- 将 GeckoDriver 升级到最新的 GeckoDriver v0.24.0 级别。
- 确保 GeckoDriver 存在于所需位置。
- GeckoDriver 拥有 non-root 用户的可执行权限。
- 将 Firefox 升级到当前的 Firefox v65.0.2 级别。
- 通过 IDE 和 [=34] 清理 您的 项目工作区 =]重建你的项目只需要依赖。
- 如果您的基本 Web Client 版本太旧,则卸载它并安装最新的 GA 和发布版本的 Web Client。
- 始终在
tearDown(){}
方法中调用driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.
Note: Always maintain the following GeckoDriver, Selenium and Firefox Browser compatibility matrix
You can find a relevant detailed discussionin Which Firefox browser versions supported for given Geckodriver version?