2

我想通过 Selenium 无头启动 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'

有任何想法吗?

4

1 回答 1

1

此错误消息...

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

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

add_preference仅由FirefoxProfile()的实例支持。

您可以在Python 中找到add_preference与实例一起使用的详细讨论:无法在网页中使用 selenium 下载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?中找到有关如何通过类headless实例使用参数的详细讨论?Options()

于 2018-10-19T18:39:12.753 回答