无法关闭'模态弹出窗口

时间:2017-01-10 11:46:32

标签: java selenium selenium-webdriver webdriver

我无法关闭模态,当我访问我想要的URL时,我会看到一个模态弹出窗口。 我试过等待并点击元素 2.还尝试通过' Alert'码 所有人都没有成功关闭弹出窗口 enter image description here enter image description here

感谢您的帮助,

enter image description here

4 个答案:

答案 0 :(得分:0)

check , whether it is separate window, if it it then will code might be work 


private static Object Handle1;
private static Object Handle2;

public static void switchToWindowsPopup() {
    Set<String> handles = DriverManager.getCurrent().getWindowHandles();
    Iterator<String> itr = handles.iterator();
    Handle1 = itr.next();
   Handle2 = Handle1;
    while (itr.hasNext()) {
        lastHandle = itr.next();
    }
    DriverManager.getCurrent().switchTo().window(Handle2.toString());
}

public static void switchToMainWindow() {
    DriverManager.getCurrent().switchTo().window(Handle1.toString());

答案 1 :(得分:0)

以下代码可能对您有帮助 -

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

或以这种方式使用JavascriptExecuter -

WebElement element = driver.findElement(By.xpath("//button[@class='close']"));
JavascriptExecutor js= (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);

答案 2 :(得分:0)

我的猜测是,为了关闭对话框,你需要点击“x”。我假设这是因为你正在等待按钮元素变得可点击,但它永远不会。所以,id建议让你的定位器更具体:

@FindBy(xpath = "//button[@class='close']/span")
WebElement closeButton;

如果有效,请告诉我。如果没有,会发生什么。

答案 3 :(得分:0)

来自评论

  

感谢快速回复@cathal我得到一个超时错误,当预期时间过去时元素不可见/定位器

实际上您的定位器不会返回唯一结果。有多个close button元素具有相同的类名close

不幸的是,你得到了隐形对话close button,这就是你遇到麻烦的原因。

你应该尝试以下方法: -

WebDriverWait wait = new WebDriverWait(driver, 10);
List<WebElement> elements = wait.until(ExpectedConditions
                .presenceOfAllElementsLocatedBy(By.cssSelector(".close")));
for (WebElement element : elements) {
    if (element.isDisplayed()) {
        element.click();
    }
}