如何使用Selenium WebDriver关闭模态?

时间:2019-06-24 10:19:42

标签: java selenium selenium-webdriver

我有一个下拉列表,当我单击任何下拉值时,将打开一个模态获取;当我在模态之外单击时,它将关闭。如何使用Selenium WebDriver处理它?<​​/ p>

这是我的模态代码

<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 个答案:

答案 0 :(得分:1)

如果您不想按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();

答案 1 :(得分:0)

这不是alert,而只是DOM的正常片段,由于CSS styling

看起来像是模式弹出窗口

因此,您所需要做的就是使用元素(例如文本)来定位元素,相关的XPath locator将类似于:

//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();

答案 2 :(得分:-1)

最简单的方法-单击页面上的一些静态文本。 尝试单击页面标题(如果存在)。