Подтвердить что ты не робот

Как закрыть браузер всплывающее окно Selenium WebDriver

Я пишу тесты для веб-приложения, используя selenium webDriver, и наткнулся на сценарий, когда, когда я пытаюсь закрыть браузер, я получаю всплывающее сообщение: "Вы уверены? Страница просит вас подтвердить, что вы хотите уйти - введенные данные будут потеряны". с 2 кнопками: оставить страницу и остаться на странице

Как нажимать на эти кнопки?

4b9b3361

Ответ 1

 ( ( JavascriptExecutor ) _driver )
            .executeScript( "window.onbeforeunload = function(e){};" );

решил проблему для меня

Ответ 2

IAlert alert = driver.SwitchTo().Alert();

alert.Accept(); //for two buttons, choose the affirmative one
// or
alert.Dismiss(); //to cancel the affirmative decision, i.e., pop up will be dismissed and no action will take place

Ответ 3

Вы можете взаимодействовать с предупреждениями и т.д. с помощью Alert API. Переключившись на предупреждение и подтвердите, что он будет выглядеть так (на Java):

Alert alert = driver.switchTo().alert();
alert.accept();

Это также объясняется в часто задаваемых вопросах Selenium.

Ответ 4

def close_all_popups(driver):
    driver.window_handles
    for h in driver.window_handles[1:]:
        driver.switch_to_window(h)
        driver.close()
    driver.switch_to_window(driver.window_handles[0])

Ответ 5

Не уверен, какова структура всплывающего окна, которое вы использовали. Вот несколько из них, которые могут работать для вас, если вы использовали любой из всплывающих окон.

Если это предупреждение. вы можете попробовать:

driver.SwitchTo().Alert()

Если появляется окно, которое появляется, то:

driver.SwitchTo().Window(<windowname>)

Для iFrame:

driver.SwitchTo().Frame("iFrmLinks")

Как только вы пройдете через один из трех, вы сможете получить доступ ко всем его внутренним элементам.

Отношения Тахир

Ответ 6

Вы можете попробовать использовать события клавиатуры. Итак, как только окно всплывает:

Вкладка "Ok".

driver.Keyboard.PressKey(Keys.Tab);

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

Затем нажмите пробел.

driver.Keyboard.PressKey(Keys.Space);

Да, это своего рода взлом, но WebDriver все еще довольно незрелый.

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

Ответ 7

У меня такая же проблема, когда у меня есть форма полей и кнопка "сделать редактирование", потому что, когда Selenium IDE автоматически нажимает на функцию javascript, ответственную за отмену окна подтверждения (оставьте страницу или все еще на ней), он не принимает "мышиное" событие мыши, которое означает, что window.confirm все еще работает, и тест автоматического прохода завершился с ошибкой. Мое решение переопределяет функцию javascript window.onbeforeunload в этом случае (не нужно спрашивать, знаем ли мы, что мы делаем, когда записываем тест в Selenium IDE). Вы можете запустить переопределить script в среде Selnium IDE, прежде чем нажимать кнопку "Сохранить" (или что-то вроде этого) через selenium.runScript - он должен просто отключить окно подтверждения.

    Command: runScript
    Target: {window.onbeforeunload=function(e){};}

Ответ 8

Вам нужно обработать неожиданные предупреждения, используя блоки try catch. Поместите свой код в блок try и поймите "UnhandledAlertException"

Пример:

try{
     .....
     .....
     code here
}catch(UnhandledAlertException e ){
    driver.switchto().alert().dismiss();
}

Ответ 9

Поместите одну из них перед событием клика:

selenium.chooseCancelOnNextConfirmation()

selenium.chooseOkOnNextConfirmation()