Обработка безголового режима в разных браузерах с использованием клиента Selenium Python - PullRequest
2 голосов
/ 05 августа 2020

В настоящее время я работаю над программой python (3.7) CLI, которая использует Selenium и будет использоваться разнообразной группой людей.

Проблема, с которой я столкнулся, заключалась в следующем:

Для таких параметров настройки, как «без головы» в Chrome, я использую

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(executable_path,options=chrome_options)

Для Firefox код выглядит так:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(executable_path,options=options)

Итак, я хотел знать, есть ли способ нормализовать эти настройки / элегантно обрабатывать разные браузеры, или мне нужно писать все в основном 2 или даже 3 раза (можно добавить Safari или Opera)?

1 Ответ

1 голос
/ 05 августа 2020

Согласно журналу изменений из Selenium Python клиент v3.12.0 :

  • Устаревшие параметры set_headless методы в пользу установщика свойств

Следовательно, если вы используете Selenium WebDriver v 3.12.0 или выше, вместо chrome_options.add_argument("--headless") вам нужно использовать средство задания свойств headless следующим образом:

options.headless = True

В противном случае вы можете увидеть DeprecationWarning следующим образом:

DeprecationWarning: use setter for headless property instead of set_headless opts.set_headless(headless=True)

Вы можете найти соответствующее подробное обсуждение в DeprecationWarning: используйте сеттер для свойства headless вместо set_headless opts.set_headless (headless = True), используя Geckodriver и Selenium в Python

Ссылки

Пара соответствующих обсуждений:

...