python - 拒绝连接和轮询更改失败:尝试使用 Selenium GeckoDriver 和 Firefox 获取资源错误时出现 NetworkError
问题描述
根据标题,现在,Firefox 打开,似乎什么都不做,然后消失了!
- 我以前从本地 ubuntu 16.04 VM 运行过它,一切都很好。
(是的,我已经升级到最新的 selenium 等如下:selenium 3.141.0 splinter 0.10.0 6 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)上试过这个,控制台显示相同的“连接被拒绝”消息,但这次,geckodriver.log 显示不同的问题,如下所示:(selenium 3.141.0 6 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()
我很欣赏在硒的“连接被拒绝”类型问题上发布了类似的问题......我希望找到一个特定于 python 的解决方案,在我看来是“网络问题”或“显示问题”......
解决方案
此错误消息...
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无法启动/产生新的WebBrowsing 会话,即Firefox 浏览器会话。
您的主要问题是您使用的二进制文件版本之间的不兼容,如下所示:
- 您的GeckoDriver版本geckodriver v0.18.0。(根据第二组日志中的第一行...geckodriver INFO geckodriver 0.18.0...)
- 您的Selenium 客户端版本是3.141.0。
- 我们不知道您的Firefox版本。
因此GeckoDriver v0.18.0 Selenium Client v3.141.0之间存在明显的不匹配。
解决方案
- 将Selenium升级到当前级别版本 3.141.59。
- 将GeckoDriver升级到最新的 GeckoDriver v0.24.0级别。
- 确保GeckoDriver出现在所需位置。
- GeckoDriver对非 root 用户具有可执行权限。
- 将Firefox升级到当前的Firefox v65.0.2级别。
- 通过IDE清理项目工作区并仅使用所需的依赖项重建项目。
- 如果您的基本Web 客户端版本太旧,请卸载它并安装最新的 GA 和已发布版本的Web 客户端。
- 始终
driver.quit()
在tearDown(){}
方法内调用以优雅地关闭和销毁WebDriver和Web Client实例。
您可以在给定的 Geckodriver 版本支持哪些 Firefox 浏览器版本中找到相关的详细讨论?
奥特罗
推荐阅读
- c# - PlayerPrefs 未保存
- google-sheets - 生成 1 列的所有组合
- html - Bootstrap 4 - 制作相对于屏幕宽度和高度的容器大小
- python - Python Flask LDAP - 作为开发人员,我可以看到密码吗?
- chart.js - ChartJs 条形图 - 将条形保持在左侧而不是在宽度上均匀分布
- azure-ad-b2c - 更改 AAD 社交登录按钮文本 n B2C 登录页面
- javascript - 重新关注删除
- go - 谷歌容器集群作为配置
- python-3.x - 请求模块未收到源代码
- angular - 国家代码 intl-tel-input 后未删除数字 0