Как отключить всплывающее окно «Обновить сайт? Изменения, которые вы внесли, возможно, не сохранены» для (python) тестов селена в chrome? - PullRequest
2 голосов
/ 09 апреля 2019

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

enter image description here

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

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

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


onbeforeunload

onbeforeunload свойства WindowEventHandlers mixin - это EventHandler для обработки перед загрузкой событий. Эти события запускаются, когда окно собирается разгрузить свои ресурсы. На этом этапе документ все еще виден, а событие все еще можно отменить.


Решение

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

  • Решение Chrome : использование --disable-popup-blocking - ChromeOptions () :

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

    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" );
    
1 голос
/ 09 апреля 2019

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

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

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

...