Skip to main content
 首页 » 编程设计

python之Webdriver之使用首选项时无法在 Firefox 中使用 headless 模式

2024年12月31日36mq0036

我想通过 Selenium headless 地启动 Firefox,但我似乎无法找到一种方法来做到这一点并同时保留我的偏好。

from selenium import webdriver; 
from selenium.webdriver import Firefox; 
 
cProfile = webdriver.FirefoxProfile(); 
options = webdriver.FirefoxOptions(); 
dwnd_path = os.getcwd(); 
 
options.add_preference('browser.download.folderList', '2'); 
options.add_preference('browser.download.manager.showWhenStarting', 'false'); 
options.add_preference('browser.download.dir', 'dwnd_path'); 
options.add_preference('browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream,application/vnd.ms-excel'); 

运行这个,我会得到这个错误:

Traceback (most recent call last): 
  File "test.py", line 17, in <module> 
    options.add_preference('browser.download.folderList', '2'); 
AttributeError: 'Options' object has no attribute 'add_preference' 

有什么想法吗?

请您参考如下方法:

这个错误信息...

AttributeError: 'Options' object has no attribute 'add_preference' 

...暗示 Options 的实例不支持属性 add_preference。

add_preference 仅由 FirefoxProfile() 实例支持。

您可以在 Python: Unable to download with selenium in webpage 中找到有关将 add_preference 与 FirefoxProfile() 实例一起使用的详细讨论。

因此您的有效代码块将是:

from selenium import webdriver; 
from selenium.webdriver.firefox.options import Options 
 
cProfile = webdriver.FirefoxProfile(); 
dwnd_path = os.getcwd(); 
cProfile.add_preference('browser.download.folderList', '2'); 
cProfile.add_preference('browser.download.manager.showWhenStarting', 'false'); 
cProfile.add_preference('browser.download.dir', 'dwnd_path'); 
cProfile.add_preference('browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream,application/vnd.ms-excel'); 
options = Options() 
options.headless = True 
driver = webdriver.Firefox(firefox_profile=cProfile, firefox_options=options, executable_path=r'C:\path\to\geckodriver.exe') 

引用

您可以在 How to make firefox headless programatically in Selenium with python? 中找到有关如何通过 Options() 类实例使用 headless 参数的详细讨论。