Нажмите на оповещение ok для модального в selenium

#java #selenium-webdriver

#java #selenium-webdriver

Вопрос:

Я хочу нажать на кнопку ok для оповещения в модальном, но не могу нажать на нее.

 // Capturing alert message.    
String alertMessage= driver.findElement(By.className("modal-header"))
                           .getText();

System.out.println(alertMessage);


String okButton= driver.findElement(By.xpath("//h4[contains(text(),'Woo Hoo! You have successfully registered! Look ou')]"))
                       .getText();
System.out.println(okButton);

driver.findElement(By.xpath("//button[contains(text(),'OK')]"))
      .click();
  

Пробовал этот код, но он не работает.Это то, что я получаю в консоли

: неизвестная ошибка: элемент <button type="button" class="close" ng-click="goTOLogin()">...</button> недоступен для просмотра в точке (897, 161). Другой элемент получит щелчок: <div class="loader" style="display: block; opacity: 0.681626;"></div>

Это html-код:

 <div id="registration" class="modal fade ng-scope in" role="dialog" style="display: block;">
  <div class="modal-dialog modal-md add-brand">
    <!-- Modal content-->
    <div class="modal-content flat-modal">
      <div class="modal-header">
        <button type="button" class="close" ng-click="goTOLogin()">X</button>
        <h4 class="modal-title common-title" style="" xpath="1">successfully registered</h4>
      </div>
      <div class="modal-body flat-body">
        <div class="clearfix"></div>
        <h4>Woo Hoo! You have successfully registered! Look out for the activation link in your email.</h4>
        <div class="modal-footer text-left">
          <button type="button" class="close" ng-click="goTOLogin()" style="">OK</button>
        </div>
      </div>
    </div>
  </div>
</div>
  

Комментарии:

1. Ваша кнопка отключена? Не могли бы вы добавить HTML-код?

2. Я опубликовал, пожалуйста, проверьте

3. Строка titleMessage= driver.findElement(с помощью.cssSelector(«//h4[@class=’modal-title common-title’]»)).getText(); System.out.println(titleMessage); Строка message= driver.findElement(С помощью.xpath(«//h4[содержит(текст(),’Ву-у-у! Вы успешно зарегистрировались! Посмотрите ou’)]»)).getText(); System.out.println(сообщение); driver.findElement(By.xpath(«//кнопка [содержит(текст(),’OK’)]»)).click(); Это то, что я пробовал.

4. Кнопка доступна для нажатия.

5. Вы прочитали сообщение об ошибке? В нем четко указано, Other element would receive the click за которым следует HTML блокирующего элемента. Из HTML этого элемента, class="loader" похоже, что есть загрузчик / счетчик чего-то, что появляется перед тем, как вы пытаетесь щелкнуть. Вы должны добавить ожидание появления этого элемента, а затем еще одно ожидание исчезновения этого элемента. ЗАТЕМ попробуйте нажать.

Ответ №1:

Вы можете нажать enter для принятия оповещений.

 Robot robot=new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);