Как отключить всплывающее окно «Перезагрузить сайт? Внесенные вами изменения могут быть не сохранены» для тестов селена (python) в chrome?

Я запускаю автоматизированные (python) тесты селена в браузере Chrome, и иногда, когда страница перезагружается, на экране появляется всплывающее окно:

Как отключить всплывающее окно «Перезагрузить сайт? Внесенные вами изменения могут быть не сохранены» для тестов селена (python) в chrome?

Можно ли настроить браузер chrome selenium таким образом, чтобы это всплывающее окно не появляется? Если да, то как это сделать? Или есть другие способы подавить это всплывающее окно? Или принять его?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
11
0
15 876
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я знаю, что это не отвечает на часть вопроса о подавлении, но...

Попробуйте этот фрагмент кода для принятия всплывающего окна:

driver.SwitchTo().Alert().Accept();

Да, я думаю, я воспользуюсь этим предложением. Но оповещение выскакивает только иногда.

Alex 09.04.2019 11:54

Вы можете попробовать добавить блок «Try Except», чтобы попытаться переключиться на окно предупреждения.

RegCent 09.04.2019 12:16
Ответ принят как подходящий

Это всплывающее окно с текстом Перезагрузить сайт? Внесенные вами изменения могут быть не сохранены является реализацией свойства onbeforeunload для WindowEventHandlers.


перед выгрузкой

Свойство перед выгрузкой миксина WindowEventHandlers — это Обработчик события для обработки событий перед разгрузкой. Эти события срабатывают, когда окно собирается использовать разгружать свои ресурсы. В этот момент документ все еще виден, и событие все еще можно отменить.


Решение

Существуют различные стратегии для обработки этого выскакивать.

  • Решение Хром: использование от --disable-popup-blocking до ChromeOptions():

    from selenium import webdriver
    
    options.add_argument("--disable-popup-blocking")
    driver=webdriver.Chrome(chrome_options=options, executable_path=/path/to/chromedriver')
    
  • Решение Fire Fox: использование от dom.disable_beforeunload до FirefoxПрофиль():

    from selenium import webdriver
    profile = webdriver.FirefoxProfile()
    profile.set_preference("dom.disable_beforeunload", True)
    driver = webdriver.Firefox(firefox_profile = profile)
    
  • Решение Кроссбраузерный: в качестве решения Кроссбраузерный вы можете отключить это диалоговое окно, вызывая executeScript(), чтобы установить window.onbeforeunload как function() {};, и вы можете использовать следующее решение:

    driver.execute_script("window.onbeforeunload = function() {};")
    
  • Решение на основе JQuery:

    $I->executeJS( "window.onbeforeunload = null" );
    

You can find a relevant discussion in How to handle below Internet Explorer popup “Are you sure you want to leave this page?” through Selenium

Я только что понял, что у меня уже есть этот флаг --disable-popup-blocking для Chrome. Однако, похоже, он не работает должным образом. Время от времени я все еще получаю всплывающее окно (повторяя одну и ту же веб-страницу).

Alex 09.04.2019 12:54

Вы пробовали решение Кроссбраузерный? Можете ли вы получить статус, пожалуйста?

undetected Selenium 09.04.2019 12:55

когда я должен выполнить скрипт? Всего один раз после того, как я создал драйвер? Каждый раз на новой странице?

Alex 09.04.2019 13:04

Всплывающее окно все еще иногда появляется.

Alex 09.04.2019 13:09

Пожалуйста, проигнорируйте мой предыдущий комментарий. Везде, где вы просматриваете страницу и появляется это всплывающее окно, вам нужно добавить эту строку, чтобы избавиться от него.

undetected Selenium 09.04.2019 13:18

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