Как принять всплывающее окно «Это действие нельзя отменить. Вы уверены, что хотите удалить этот список желаний», используя Selenium и Java - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно нажать на первую кнопку уведомления браузера, которое появляется после нажатия на кнопку «Удалить список желаний».Эта кнопка, как показано ниже;

  <a href="/account/wishlistupdate?mainAction=delete&amp;wishlistId=2547474" class="btn btn-danger btn-sm" onclick="return confirm('This action cannot be undone. Are you sure you want to delete this wishlist?')" style="" xpath="1">Delete wishlist</a>   

При нажатии этой кнопки открывается уведомление браузера.

enter image description here

Я пробовал alert.accept (), но у меня не работает.

 public HomePage editWishlist(){
    click(edit_button);    //     By edit_button = By.xpath("//div[@class='btn-edit-text']");

    click(deleteWishlist_button); //    By deleteWishlist_button = By.linkText("Delete wishlist");

    try {
        Thread.sleep(1500);
    } catch(InterruptedException e) {
        System.out.println("got interrupted!");
    }

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

    return this;
}

Как я могусправиться с этим?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Это всплывающее окно с текстом

This action cannot be undone. Are you sure you want to delete this wishlist? 

... является реализацией onbeforeunload свойства WindowEventHandlers .


onbeforeunload

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


Решение

A Кросс-браузер Решение состоит в том, чтобы отключить это диалоговое окно, вызываяexecuteScript() настройка window.onbeforeunload как function() {};, и вы можете использовать следующее решение:

    driver.execute_script("window.onbeforeunload = function() {};")

Соответствующее обсуждение можно найти в Как отключить«Перезагрузить сайт?Внесенные вами изменения могут не сохраняться »(всплывающее окно для (python) тестов селена в chrome?

0 голосов
/ 20 сентября 2019

Это Javascript Confirmation Alert, и вы можете принять его switching, а затем accepting it:

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

Аналогично, чтобы нажать cancel, вы можете вызвать метод dismiss()

...