Webdriver - Нельзя использовать режим без головы в Firefox при использовании настроек

Я хочу запустить Firefox без помощи Selenium, но я не могу найти способ сделать это и сохранить свои предпочтения в то же время.

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'

Есть идеи?

1 ответ

Решение

Это сообщение об ошибке...

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

... подразумевает, что экземпляр Options не поддерживает атрибут add_preference.

add_preference поддерживается только экземпляром FirefoxProfile().

Вы можете найти подробное обсуждение для использования add_preference с экземпляром FirefoxProfile() в Python: невозможно загрузить с селеном на веб-странице

Таким образом, ваш эффективный блок кода будет:

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')

Вы можете найти подробное обсуждение, чтобы использовать headless аргумент через экземпляр Options() класс в [Как сделать Firefox безголовым программно в Selenium с помощью Python?]( Как сделать Firefox безголовым программно в Selenium с помощью Python?

Другие вопросы по тегам