Firefox 使用 webdriver python API 时无法打开 url

Posted

技术标签:

【中文标题】Firefox 使用 webdriver python API 时无法打开 url【英文标题】:Firefox fails to open url when using webdriver python API 【发布时间】:2021-09-04 10:17:51 【问题描述】:

我是 python 新手,正在尝试构建一个 selenium 代码来通过 firefox 打开一个网站。 我正在使用 debian 拉伸机进行测试。工具的版本如下:

geckodriver 0.24.0 (2019-01-28) , Python 2.7.13 , Mozilla Firefox 52.7.3 , selenium (3.141.0)

我看到 firefox 窗口打开了(即使是无头的)。但它并没有进一步打开网站。 firefox 实例在打开后等待一段时间然后停止,脚本给出类似的错误

WebHandle.open_application("Firefox" , "http://www.google.com") 文件“/home/yyyyy/yyyyy/yyyyy/yyyyy/script.py”,第 49 行,在 open_application driver = webdriver.Firefox(firefox_options = options, executable_path='/usr/local/bin/geckodriver') init 中的文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py”,第 174 行 keep_alive=真) init 中的文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第 157 行 self.start_session(功能,浏览器配置文件) 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第 252 行,在 start_session 响应 = self.execute(Command.NEW_SESSION,参数) 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第 321 行,在执行 self.error_handler.check_response(响应) 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py”,第 242 行,在 check_response 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.WebDriverException:消息:连接被拒绝

代码:

from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options as FirefoxOptions

        options = FirefoxOptions()
        options.add_argument("--headless")
        print (" * Opening firefox session")
        driver = webdriver.Firefox(firefox_options = options, executable_path='/usr/local/bin/geckodriver')
        driver.get("https://www.google.com")
        driver.maximize_window()
        print(driver.title)

查看 geckodriver.log 时,我看到以下错误

1624193615192 mozrunner::runner INFO 运行命令:“/usr/bin/firefox”“-marionette”“--headless”“-foreground”“-no-remote”“-profile”“/tmp/rust_mozprofile.Wwi0327B9dAL " 1624193616996 Marionette INFO 监听 2828 端口

[孩子 28357] ###!!!中止:通道错误中止。:文件 /build/firefox-esr-52.7.3esr/ipc/glue/MessageChannel.cpp,第 2152 行 [孩子 28357] ###!!!中止:通道错误中止。:文件 /build/firefox-esr-52.7.3esr/ipc/glue/MessageChannel.cpp,第 2152 行

###!!! [Child][MessageChannel] 错误:(msgtype=0x3E0003,name=PCompositable::Msg_Destroy) 通道错误:无法发送/接收 ###!!! [Child][MessageChannel] 错误:(msgtype=0x3E0003,name=PCompositable::Msg_Destroy) 频道错误:无法发送/接收

感谢您在解决问题方面提供的任何帮助

【问题讨论】:

【参考方案1】:

尝试将geckodriver.exe 文件放在单独的文件夹和驱动器中,并更新executable_path 中的路径。 例如:

driver = webdriver.Firefox(firefox_options = options, executable_path=r"D:/Python/drivers/geckodriver.exe")

【讨论】:

以上是关于Firefox 使用 webdriver python API 时无法打开 url的主要内容,如果未能解决你的问题,请参考以下文章

selenium webdriver.firefox()错误[重复]

Firefox Webdriver 非常慢

在 Python 中使用 Selenium WebDriver 时处理 Firefox 无响应?

Selenium w/Firefox 88 更改为 navigator.webdriver

用于 Firefox 的 Selenium WebDriver [重复]

如何在Firefox 58 ++上使用适用于Selenium的PHP Webdriver下载文件