首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用selenium(python)连接到现有firefox实例

如何使用selenium(python)连接到现有firefox实例
EN

Stack Overflow用户
提问于 2022-05-21 17:28:10
回答 3查看 1K关注 0票数 1

有没有办法打开Firefox浏览器,然后使用selenium连接到它呢?通过在命令行中启动并使用--remote-debugging-port参数,我知道在chrome上这是可能的,如下所示:

代码语言:javascript
运行
复制
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)

这能在firefox中完成吗?我一直在寻找和检查有关这方面的问题已经有一段时间了,但没有运气。

我发现的唯一线索是geckodriver有一个--connect-existing参数,但我不知道如何使用它。如何将参数传递给geckodriver并在selenium中使用?

任何帮助都将不胜感激。如果做不到,请告诉我。谢谢

编辑:--好的,我已经取得了一些进展,我知道如何将geckodriver传递到selenium:

代码语言:javascript
运行
复制
driver = webdriver.Firefox(service=Service(PATH, service_args=['--marionette-port', '9394', '--connect-existing']))

现在的问题是,即使我用这样的调试器服务器启动firefox:

firefox.exe -marionette -start-debugger-server <PORT>

当我运行代码时,它会引发以下错误消息:

代码语言:javascript
运行
复制
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)

或者我有多个弹出窗口,告诉我火狐有一个传入的请求。即使我点击to,似乎什么也没发生。

EN

回答 3

Stack Overflow用户

发布于 2022-09-01 14:33:02

CMD:

代码语言:javascript
运行
复制
C:\Program Files\Mozilla Firefox\

firefox.exe -marionette -start-debugger-server 2828 //only use 2828

Python脚本:

代码语言:javascript
运行
复制
from selenium import webdriver

driver = webdriver.Firefox(executable_path = "YOUR GECKODRIVER PATH", service_args = ['--marionette-port', '2828', '--connect-existing'] )

pageSource = driver.page_source
print(pageSource)
票数 2
EN

Stack Overflow用户

发布于 2022-06-28 15:35:41

我得到了同样的错误,但是当我使用默认的Marionette端口2828时,它起了作用。进入火狐中的about:config并查找marionette.port,并确保它与web驱动程序的service_args中的端口相同。然后,使用-marionette选项启动Firefox实例,但不使用-start-debugger-server选项。

票数 1
EN

Stack Overflow用户

发布于 2022-11-18 01:49:41

第一步:

打开CMD并执行: firefox.exe --木偶

此命令将打开一个firefox实例,该实例具有它的木偶端口=2828(默认情况下)

(在firefox实例的url栏中写入:config,按enter,然后搜索: marionette.port)

代码语言:javascript
运行
复制
from selenium import webdriver
from selenium.webdriver.firefox.service import Service

firefox_services = Service(executable_path='firefoxdriver', port=3000, service_args=['--marionette-port', '2828', '--connect-existing'])
driver = webdriver.Firefox(service=firefox_services)
driver.get('https://youtube.com')
driver.execute_script('alert(\'your favorite music is here\')')

executable_path='firefoxdriver'

我的geckodriver.exe在火狐驱动程序文件夹中

截图我的VSCode

port=3000

我想通过3000端口发送我的“geckodriver命令”

service_args='--marionette-port','2828',-连接-现有的‘

我想控制一个打开的firefox实例,它的木偶端口=2828。

建议:

在您知道如何连接到打开的firefox实例之前,删除在%temp%中创建的所有firefox配置文件文件夹

在%temp%中删除这些文件夹

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72331816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档