Dem*_*axl 5 python firefox selenium-webdriver geckodriver
有没有办法打开 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)
Run Code Online (Sandbox Code Playgroud)
这可以在火狐中完成吗?我已经搜索和检查与此相关的问题有一段时间了,但没有运气。
我发现的唯一线索是 geckodriver 有一个--connect-existing参数,但我不知道如何使用它。如何将参数传递给 geckodriver 并在 selenium 中使用它?
任何帮助,将不胜感激。如果无法完成,请告诉我。谢谢
编辑: 好的,我已经取得了一些进展,我知道如何将 geckodriver args 传递给 selenium:
driver = webdriver.Firefox(service=Service(PATH, service_args=['--marionette-port', '9394', '--connect-existing']))
Run Code Online (Sandbox Code Playgroud)
现在的问题是,即使我使用这样的调试器服务器启动 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)
Run Code Online (Sandbox Code Playgroud)
或者我收到多个弹出窗口,告诉我有一个发往 Firefox 的传入请求。即使我点击“确定”,似乎也没有发生任何事情。
小智 4
命令:
C:\Program Files\Mozilla Firefox\
firefox.exe -marionette -start-debugger-server 2828 //only use 2828
Run Code Online (Sandbox Code Playgroud)
Python脚本:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6927 次 |
| 最近记录: |