gpt4 book ai didi

java - 元素不可见异常 - 即使使用不同的 Selenium 等待

转载 作者:行者123 更新时间:2023-11-30 08:40:35 25 4
gpt4 key购买 nike

我正在尝试使用 Selenium 和 Java 自动执行 Web 应用程序的功能测试。在我的应用程序中有几个菜单。单击特定菜单时,会出现子菜单的下拉菜单 click to view screenshot of menu

我使用下面的代码来点击子菜单

driver.findElement(By.xpath("id=menu")).click();
driver.findElement(By.xpath("id=sub_menu_a")).click();

但问题是它在第二行抛出“ElementNotVisibleException”。即使我使用隐式等待也会发生同样的情况

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

显式等待

WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("id=sub_menu_a")));

和流利的等待。

Wait<WebDriver> fluentWait=new FluentWait<WebDriver>(driver)
.withTimeout(60, TimeUnit.SECONDS)
.pollingEvery(2, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class,ElementNotVisibleException.class);
WebElement element=fluentWait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver){
driver.findElement(By.xpath("id=menu"));
return driver.findElement(By.xpath("id=sub_menu_a"));
}
});
element.click();

但运气不好。但是如果使用

添加 sleep 时间,代码工作正常
Thread.sleep(sleeptime);

第一行代码前后。但这不是永久性的解决方案,因为页面加载时间可能会因网络速度和页面中的数据而异。还有其他解决办法吗?

最佳答案

试试这个

    WebElement menu=driver.findElement(By.xpath("id=menu"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", menu);
WebElement subMenu=driver.findElement(By.xpath("id=sub_menu_a"));
executor.executeScript("arguments[0].click();", subMenu);

希望这个工作

关于java - 元素不可见异常 - 即使使用不同的 Selenium 等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596274/

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