Нажмите кнопку OK внутри оповещения (Selenium IDE)

Мне нужно нажать кнопку «ОК» в окне предупреждения с помощью команды Selenium . Я попробовал assertAlert или verifyAlert но они не делают того, что я хочу.

Можно нажать кнопку «ОК»? Если да, может ли кто-нибудь предоставить мне пример команды Selenium IDE?

Попробуйте Selenium 2.0b1. У этого есть другое kernel, чем первая версия. Он должен поддерживать всплывающие диалоги в соответствии с документацией :

Всплывающие диалоги

Начиная с Selenium 2.0 beta 1, встроенная поддержка обработки всплывающих диалоговых окон. После запуска и действия, которые откроют всплывающее окно, вы можете получить доступ к уведомлению со следующим:

Ява

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

Рубин

 driver.switch_to.alert 

Это вернет текущий открытый объект предупреждения. С помощью этого объекта вы можете теперь принимать, отклонять, читать содержимое или даже вводить подсказку. Этот интерфейс работает одинаково хорошо при оповещениях, подтверждениях, подсказках. Для получения дополнительной информации обратитесь к JavaDocs.

Чтобы щелкнуть кнопку «ok» в окне предупреждения:

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

Это ответ с 2012 года, вопрос, если с 2009 года, но люди все еще смотрят на него, и есть только один правильный (используйте WebDriver ) и один почти полезный (но недостаточно хороший) ответ.


Если вы используете Selenium RC и можете увидеть диалоговое окно предупреждения, это невозможно. Селен должен справиться с этим для вас. Но, как указано в документации Selenium :

Selenium пытается скрыть эти диалоги от вас (заменив window.alert, window.confirm и window.prompt), чтобы они не остановили выполнение вашей страницы. Если вы видите всплывающее окно с предупреждением, возможно, это связано с тем, что он запускается во время процесса загрузки страницы, что, как правило, слишком рано для нас, чтобы защитить страницу.

Это известное ограничение Selenium RC (и, следовательно, Selenium IDE), и одна из причин, по которой Selenium 2 (WebDriver) был разработан. Если вы хотите обрабатывать предупреждения JS onload , вам необходимо использовать обработку сообщений WebDriver .

Тем не менее, вы можете использовать Robot или selenium.keyPressNative() чтобы заполнить любой текст и нажать Enter и подтвердить диалог вслепую. Это не самый чистый способ, но он может работать. Однако вы не сможете получить alert сообщение.

Robot есть все полезные ключи, сопоставленные с константами, так что это будет легко. С помощью keyPressNative() вы хотите использовать 10 качестве значения для нажатия Enter или 27 для Esc, поскольку он работает с кодами ASCII .

1 | Всплывающий текст всплывающего windows «Печать предупреждений» и закрыть -I

 Alert alert = driver.switchTo().alert(); System.out.println(closeAlertAndGetItsText()); 

2 | Всплывающий текст всплывающего windows «Печать предупреждений» и закрыть -II

 Alert alert = driver.switchTo().alert(); System.out.println(alert.getText()); //Print Alert popup alert.accept(); //Close Alert popup 

3 | Всплывающее сообщение с предупреждением о предупреждении и закрытие

 Alert alert = driver.switchTo().alert(); assertEquals("Expected Value", closeAlertAndGetItsText()); 

Если вы используете Selenium IDE, вам нужно щелкнуть по кнопке Ok вручную, потому что когда команда оповещения запускает это время, браузер перестает работать, и если вы хотите автоматически нажимать кнопку ok, тогда вам нужно использовать RC или webdriver selenium, а ниже команда для Selenium IDE

В selenium ide используйте storeeval command, различные типы ящиков

  storeEval | alert("This is alert box") | storeEval | prompt("This is prompt box. Please enter the value") | text storeEval | confirm("this is cofirm box") | 

Вы можете посмотреть в chooseOkOnNextConfirmation , хотя, вероятно, это должно быть поведение по умолчанию, если я правильно прочитал документы.

Вопрос непонятен – это для предупреждения о загрузке страницы? Вы не должны видеть диалоговые windows предупреждений при использовании Selenium, поскольку он заменяет alert() своей собственной версией, которая просто захватывает сообщение, данное для проверки.

Selenium не поддерживает alert() при загрузке страницы, так как он должен исправлять функцию в тестируемом окне своей собственной версией.

Если вы не можете избавиться от предупреждений onload от тестируемого приложения, вы должны изучить возможность использования автоматизации графического интерфейса, чтобы щелкнуть всплывающие windows, которые генерируются, например, AutoIT, если вы находитесь в Windows.

Используйте Alert Interface, First switchTo() для предупреждения, а затем либо используйте accept() чтобы щелкнуть OK, либо использовать dismiss() чтобы ОТМЕНА

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

или

 Alert alert_box = driver.switchTo().alert(); alert_box.dismiss(); 

assertAlert должен сделать трюк. В документах я вижу, что оповещения, созданные в обработчике событий OnLoad на странице, не могут быть написаны таким образом (и испытали это сами, увы, из-за жизненного цикла страницы ASP.NET). Может быть, это то, чем вы сталкиваетесь?

Для seleniumа предупреждение – это то, которое было поднято с помощью javascript, например

  javascript:alert(); 

Существует одна базовая проверка, чтобы проверить, является ли ваше предупреждение фактически предупреждением javascript или просто полем на основе div для отображения некоторого сообщения. Если это предупреждение javascript, вы не сможете увидеть его на экране во время запуска сценария selenium.

Если вы можете это увидеть, вам нужно получить локатор кнопки ok предупреждения и использовать selenium.click (локатор), чтобы закрыть предупреждение. Может помочь вам лучше, если вы можете предоставить больше контекста:

  1. IDE или RC?
  2. HTML-код предупреждения
  3. ваш сценарий seleniumа.

Vamyip

Используйте selectOkOnNextConfirmation (), чтобы отклонить предупреждение и getAlert (), чтобы убедиться, что оно было показано (и, возможно, захватить его текст для проверки).

 selenium.chooseOkOnNextConfirmation(); // prepares Selenium to handle next alert selenium.click(locator); String alertText = selenium.getAlert(); // verifies that alert was shown assertEquals("This is a popup window", alertText); ... 

Это Pythoncode
Проблема с сигнальными ящиками (особенно сладкие предупреждения – это то, что у них есть задержка, а Selenium – слишком быстро)

Вариант, который работал для меня:

 while True: try: driver.find_element_by_xpath('//div[@class="sweet-alert showSweetAlert visible"]') break except: wait = WebDriverWait(driver, 1000) confirm_button = driver.find_element_by_xpath('//button[@class="confirm"]') confirm_button.click() 
Interesting Posts

Неопределенные символы для архитектуры x86_64 – Mavericks (Yosemite, El Capitan …)

Макрос диаграммы, отображающий неправильные метки из непересекающихся видимых строк на отфильтрованном листе

android – listview получить просмотр позиции по позиции

Мой браузер Edge не работает Windows 10

Загрузка Chromium OS с USB

Беспроводная связь очень медленная на одном ноутбуке в сети, все остальные машины нормальные?

Рельсы rspec устанавливают субдомен

Вставляемое устройство на передний USB-компьютер * иногда * перезапускается

Применить формулу VLOOKUP к нескольким листам

Правильный способ синхронизации ArrayList в java

Как изменить дату изменения файла Windows Explorer вместо даты создания?

Как такие сервисы, как Google Latitude, геолокают мой ноутбук совершенно без GPS?

Уже есть объект, названный в базе данных

Различия между std :: make_unique и std :: unique_ptr

Использование «Пожалуйста, выберите» f: selectItem с нулевым / пустым значением внутри ap: selectOneMenu

Давайте будем гением компьютера.