有没有办法打开Firefox浏览器,然后使用selenium连接到它?我知道在chrome上可以这样做,方法是在命令行中启动它,并使用--remote-debugging-port
参数,如下所示:
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
subprocess.Popen('"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" --remote-debugging-port=9222', shell=True)
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(executable_path=PATH, options=options)
这可以在火狐中完成吗?我已经搜索和检查与此有关的问题有一段时间了,但没有运气。
我发现的唯一线索是geckodriver有一个--connect-existing
参数,但我不知道如何使用它。如何将参数传递给geckodriver并在selenium中使用它?
任何帮助将不胜感激。如果它不能做到请让我知道。谢谢
**EDIT:**好的,我已经取得了一些进展,我知道如何将geckodriver参数传递给selenium:
driver = webdriver.Firefox(service=Service(PATH, service_args=['--marionette-port', '9394', '--connect-existing']))
现在的问题是,即使我用这样一个调试器服务器启动Firefox:firefox.exe -marionette -start-debugger-server <PORT>
当我运行代码时,它会引发以下错误消息:
Traceback (most recent call last):
File "c:\Users\maxis\Desktop\Python\Freelance\Application for Opening Web Browsers\browsers\firefox.py", line 107, in <module>
driver = webdriver.Firefox(service=Service(PATH, service_args=['--marionette-port', '9394', '--connect-existing']))
File "C:\Users\maxis\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 180, in __init__
RemoteWebDriver.__init__(
File "C:\Users\maxis\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 275, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Users\maxis\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 365, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Users\maxis\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 430, in execute
self.error_handler.check_response(response)
File "C:\Users\maxis\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: No connection could be made because the target machine actively refused it. (os error
10061)
或者我得到多个弹出窗口,告诉我有一个传入的请求到Firefox。即使当我点击OK,似乎什么也没有发生。
3条答案
按热度按时间ifsvaxew1#
命令:
Python脚本:
fquxozlt2#
我也遇到了同样的错误,但当我使用默认的Marionette端口2828时,它仍然有效。在Firefox中找到
about:config
,并查找marionette.port
,确保它与Web驱动程序的service_args
中的端口相同。然后,仅使用-marionette
选项启动Firefox示例,但不使用-start-debugger-server
选项。eit6fx6z3#
第一步:
打开CMD并执行:firefox.exe -- puppet
此命令将打开一个marionette-port=2828的firefox示例(默认情况下)
(在Firefox示例的url栏中写入about:config,按回车键,然后搜索:牵线 puppet 端口)
然后:
可执行文件路径='firefoxdriver'
我的geckodriver.exe在firefoxdriver文件夹中
Screenshot my VSCode
端口=3000
我想通过端口3000发送我的“geckodriver命令”
服务参数=['--牵线 puppet 端口','2828','--连接现有端口']
我想控制一个打开的firefox示例,它的marionette-port=2828
建议:
在您知道如何连接到打开的firefox示例之前,删除在%temp%中创建的所有firefox配置文件文件夹
Delete these folders in %temp%