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

как убрать всплывающее окно уведомления, рушатся автотесты

python
webdriver
Теги: #<Tag:0x00007f7b65ed15b0> #<Tag:0x00007f7b65ed1470>

(Alexzoo) #1

При заходе и авторизации на сайте, например facebook появляется окно с уведомлением(см. скрин)
тем самым рушится тест. как избавиться от этой фигни?
Перепробовали кучу вариантов с инициализацией драйвера и настроек, пока решения не нашел.

код:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("–disable-infobars")
chrome_options.add_argument("–enable-automation")
chrome_options.add_argument("–start-maximized")
driver = webdriver.Chrome(chrome_options=chrome_options,
executable_path=r’C:\projects\Drivers\chromedriver.exe’)

driver.get("url")

вот это окно:
facebook_notification


(La Pluie) #2

chrome_options.add_argument("--disable-notifications")
пробовали?

так же можно после авторизации добавить шаг с закрытием алерта

driver.switchTo().alert().dismiss()


(Alexzoo) #3

спасибо @siberianmidwest это сработало

     chrome_options.add_argument("--disable-notifications")

(Alexzoo) #4

Теперь нужно найти аналог отключения нотификации для DesiredCapabilites для Chrome и запустить на Selenium Grid/Selenoid
Уверен что многие сталкивались с проблемой этих всплывающих нотификаций, подскажите плиз.


(Сергей Кузьмин) #5

может

		capabilities.setCapability(
					org.openqa.selenium.chrome.ChromeOptions.CAPABILITY, chromeOptions);

(Alexzoo) #6

если честно не очень понял как это прикрутить, я пока не силен в Python
но тут это делается так:

def setup(self):
    capabilities = {
        "browserName": "chrome",
        "version": "68.0",
        "enableVNC": False,
        "enableVideo": False
    }

    driver = webdriver.Remote(command_executor="http://x.x.x.x:4444/wd/hub", desired_capabilities=capabilities)
    browser.set_driver(driver)
    driver.set_window_size(1920, 1080)

(Alexzoo) #7

сам же и отвечу, нашел но пока не проверял, говорят что работает:

options = webdriver.ChromeOptions()
options.add_argument("--disable-notifications")
chrome_remote = webdriver.Remote('http://hostname:4444/wd/hub', options.to_capabilities())

(Michael) #8

Теперь нужно найти аналог отключения нотификации для DesiredCapabilites для Chrome и запустить на Selenium Grid/Selenoid

DesiredCapabilities capabilities = new DesiredCapabilities();

куча разных капабилити, типа названия браузера, принятия несекьюрных сертификатов и тд.

capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE); //здесь нужно почитать - IGNORE/ACCEPT мож еще что подойдет лучше

Configuration.browserCapabilities = capabilities;


(Alexzoo) #9

спасибо, только это для Джавы, а надо для Python


(Alexzoo) #10

Настройки для remote-версии выглядят так:

def setup_class(self):
capabilities = {
“browserName”: “chrome”,
“version”: “68.0”,
“enableVNC”: True,
“enableVideo”: False
}

потом драйвер инициализируется так:
driver = webdriver.Remote(command_executor=“http://x.x.x.x:4444/wd/hub”, desired_capabilities=capabilities)

как в это добавить другие нужные опции типа:

    options.add_argument("--disable-notifications")
    options.add_argument("--lang=ru")

я не нашел.

Есть и такой вариант определения:

   options = webdriver.ChromeOptions()
   options.add_argument("--disable-notifications")
   options.add_argument("--lang=ru")
   capabilities = options.to_capabilities()

   driver = webdriver.Remote(command_executor="http://x.x.x.x:4444/wd/hub", desired_capabilities=capabilities)

но как сюда добавить это:
capabilities = {
“browserName”: “chrome”,
“version”: “68.0”,
“enableVNC”: True,
“enableVideo”: False
}
без этого не работает Selenoid

если сказать коротко, как объединить опции первого и второго варианта?


(Евгений) #11

Определите capabilities и chromeOptions так:

def setup(self):
    capabilities = {
        "browserName": "chrome",
        "version": "68.0",
        "enableVNC": False,
        "enableVideo": False,
        "chromeOptions": {'args': ['--disable-notifications', '--lang=ru', '--window-size=1920,1080', '--window-position=0,0']}
    }

    driver = webdriver.Remote(command_executor="http://x.x.x.x:4444/wd/hub", desired_capabilities=capabilities)
    browser.set_driver(driver)

(Alexzoo) #12

Спасибо большое.

Вот только язык почемуто не подхватывается, все так же инглиш.