Как закрыть модал с помощью Selenium WebDriver? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть выпадающий список, когда я нажимаю на любое из выпадающих значений, открывается модальное окно. Когда я нажимаю вне модального окна, оно приближается.Как справиться с этим с Selenium WebDriver?

вот мой модальный код

<div class="modal fade bd-example-modal-sm show" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" style="display: block;">
  <div class="modal-dialog modal-sm">
     <div class="modal-content">You click on Dropdown hover Option
     </div>
  </div>

Я пробовал с приведенным ниже кодом

driver.switchTo().defaultContent();

и

driver.switchTo().alert().dismiss();

Но оба не работают.

Ответы [ 3 ]

1 голос
/ 25 июня 2019

Если вы не хотите нажимать клавишу Esc, вы можете нажать на созданный div, чтобы охватить остальную часть страницы, используя следующее:

    driver.get("https://demo.stqatools.com/MouseHover.php");
    WebElement hoverButton = driver.findElement(By.cssSelector(".dropbtn"));
    WebElement linkOne = driver.findElement(By.cssSelector(".dropdown-content > a"));

    //Activate modal dialogue
    Actions action = new Actions(driver);
    action.moveToElement(hoverButton).perform();
    wait.until(ExpectedConditions.visibilityOf(linkOne));
    action.moveToElement(linkOne).click().perform();

    //Dismiss modal dialogue
    driver.findElement(By.cssSelector(".show")).click();
0 голосов
/ 24 июня 2019

Это не предупреждение , это просто обычный фрагмент DOM , который выглядит как модальное всплывающее окно из-за CSS-стиля

Поэтому все, что вам нужно сделать, это найти элемент, используя, например, его текст, соответствующий локатор XPath будет выглядеть примерно так:

//div[contains(text(),'You click on Dropdown hover Option')]

Было бы также хорошо подождать"до появления / невозможности всплывающего окна через WebDriverWait вроде:

new org.openqa.selenium.support.ui.WebDriverWait(driver, 10)
        .until(
                ExpectedConditions.elementToBeClickable(
                        By.xpath("//div[contains(text(),'You click on Dropdown hover Option')]")))
        .click();
0 голосов
/ 24 июня 2019

Самый простой способ - это нажать на какой-нибудь статический текст на странице. Попробуйте нажать на заголовок страницы (если есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...