【问题标题】:Webdriver - Can't use headless mode in Firefox when using preferencesWebdriver - 使用首选项时无法在 Firefox 中使用无头模式
【发布时间】:2019-03-24 14:55:12
【问题描述】:

我想通过 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'

有什么想法吗?

【问题讨论】:

    标签: python selenium selenium-webdriver firefox-profile firefox-headless


    【解决方案1】:

    此错误消息...

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

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

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

    您可以在Python: Unable to download with selenium in webpage 中找到使用add_preferenceFirefoxProfile() 实例的详细讨论

    所以你的有效代码块将是:

    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 参数的详细讨论

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 2015-02-28
      相关资源
      最近更新 更多