Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Selene + Python + передача параметров при запуске webdriver

selene
python
webdriver
Теги: #<Tag:0x00007f7b64504ec0> #<Tag:0x00007f7b64504d80> #<Tag:0x00007f7b64504c18>

(Alexzoo) #1

Добрый день!

нужно сделать инициализацию драйвера с определенными параметрами - отключить popup окна и уведомления.

для чистого selenium это делается так:

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'C:\path\to\chromedriver.exe')

как сделать такое для Selene?


(Вадим) #2

Аналогично :slight_smile: . Заверни это в метод определенный и вызывай когда надо. У тебя реализация вся есть


(Alexzoo) #3

не понял, а можно пример?


(Вадим) #4

Попробуй этот код:

def chrome_without_popup(self):
from selenium.webdriver.chrome.options import Options

chrome_options = webdriver.ChromeOptions()
prefs = {“profile.default_content_setting_values.notifications”: 2}
chrome_options.add_experimental_option(“prefs”, prefs)
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r’C:\path\to\chromedriver.exe’)
driver = browser.set_driver(driver)
return driver


(Alexzoo) #5

Спасибо, завтра попробую.
Один момент, по дефолту в selene используется я так понял webdriver_manager если не ошибаюсь с названием, и при пользовании selene даже не приходится возится с настройками и указыванием пути до webdriver, все само подхвативается. как быть с этим?


(Вадим) #6

Из коробки да, у селена есть такая фича, но как по мне, она полезна на ранних этапах, когда ты локально делаешь тесты. В дальнейшем, когда тесты на сервере, надо вот такие методы переопределять . Ближе к делу, ты сам можешь указывать браузера селена:
config.browser_name = BrowserName.CHROME
или
config.browser_name = “chrome”
Вместо этого используй свои методы, переопределяй.


(Alexzoo) #7

Спасибо. Да, я сначала локально тесты пишу и отлаживаю. А потом перетаскиваю на Selenoid и использую webdriver.Remote.
Кстати а есть настройки для Remote Chrome чтобы отключать уведомления?


(Вадим) #8

Про Селеноид слышал, но пока не использую… Надо заглядывать какие там есть методы для Remote, а так не подскажу(


(Alexzoo) #9

в итоге функция выглядит так, и все работает как надо, спасибо @Mastaforka

def setup_class(self):
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--disable-notifications")
    chrome_options.add_argument("--enable-automation")
    chrome_options.add_argument("--start-maximized")
    driver = webdriver.Chrome(chrome_options=chrome_options,
                              executable_path=r'C:\projects\python\autotests_hotwifi\Drivers\chromedriver.exe')
    driver = browser.set_driver(driver)
    return driver

PS так же тут работает отключение нотификаций, о которых я писал с другой ветке