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

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

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

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

4b9b3361

Ответ 1

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

Диалоги всплывающих окон

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

Java

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

рубин

driver.switch_to.alert

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

Ответ 2

Чтобы нажать кнопку "ok" в окне предупреждения:

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

Ответ 3

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


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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

2 | Всплывающий текст всплывающего всплывающего окна и закрыть -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());

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

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

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

или

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

Ответ 9

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

Ответ 10

Для селена предупреждение представляет собой предупреждение, которое создается с помощью javascript, например.

 javascript:alert();

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

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

  • IDE или RC?
  • HTML-код оповещения
  • ваш селен script.

Vamyip

Ответ 11

Используйте 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);
...