gpt4 book ai didi

java - WebDriver 在一定时间后关闭弹出窗口

转载 作者:行者123 更新时间:2023-12-02 01:33:37 24 4
gpt4 key购买 nike

我有一个基于 Selenium WebDriver 的测试,它填写表单并将其发送以进行处理。在处理期间,会打开一个窗口。有时处理失败,但这个窗口没有关闭,所以我们无法得到结果。本次测试的目的是为了得到结果。我尝试为此窗口设置一个超时,因此它应该在预定义的时间(我现在将其设置为 10 秒)后由 WebDriver 关闭,并且应该重新发送表单。我使用以下代码。

WebElement webElement;
try {
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(sendButton).click();
webElement = wait.until(ExpectedConditions.presenceOfElementLocated(By.className("button-resultdown")));
} catch (TimeoutException ex) {
webElement = null;
} finally {
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}
if (webElement == null) {
driver.findElement(popUpClose).click();
TimeUnit.SECONDS.sleep(4);
driver.findElement(sendButton).click();
}

弹出窗口10秒后不会自动关闭。我检查了元素定位器,它们是有效的。

最佳答案

最佳实践是不要同时使用显式和隐式等待,查找更多详细信息 here .
对于弹出窗口关闭,您可以尝试使用 JavaScript 单击或等待 popUpClose 可单击。

JavascriptExecutor js = (JavascriptExecutor) driver;

driver.findElement(sendButton).click();

List<WebElement> elements = waitElements(driver, 5, By.className("button-resultdown"));
if (elements.size() == 0){
List<WebElement> popUpCloseButtons = driver.findElements(popUpClose);
System.out.println("Popup Close Buttons size: " + popUpCloseButtons.size());
if (popUpCloseButtons.size() > 0)
js.executeScript("arguments[0].click();", popUpCloseButtons.get(popUpCloseButtons.size() - 1));
//popUpCloseButtons.get(popUpCloseButtons.size() - 1).click();
}

以及自定义等待方法:

public List<WebElement> waitElements(WebDriver driver, int timeout, By locator) throws InterruptedException {
List<WebElement> elements = new ArrayList<>();
for (int i = 0; i < timeout; i++) {
elements = driver.findElements(locator);
if (elements.size() > 0)
break;

System.out.println("Not!");
Thread.sleep(1000);
}

return elements;
}

关于java - WebDriver 在一定时间后关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55595093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com