答案 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();
}
}