等待元素加载的几种处理

1 硬性等待

Thread.sleep(int sleeptime);

 

2 智能等待

复制代码
public void waitForElementToLoad(int timeOut, final By By) {
    try {
        (new WebDriverWait(driver, timeOut)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver driver) {
                WebElement element = driver.findElement(By);
                return element.isDisplayed();
            }
        });
    } catch (TimeoutException e) {
        Assert.fail("超时!! " + timeOut + " 秒之后还没找到元素 [" + By + "]", e);
    }
}
复制代码

此方法有两个参数,timeOut是等待元素的超时时间,就是说过了这个时间如果元素还没加载出来就报错。By对象,这个是你元素的定位方式比如By.id(login);

这个方法会在给定timeOut去查找元素,如果在小于timeOut的时间内找到了元素,剩下的时间不在等待,直接执行接下来的操作。

3 设置等待页面加载完毕

有时候我们打开一个网页,网页加载速度比较慢,我们又想等网页完全加载完毕了在执行操作,该怎么办?

int pageLoadTime = 10;

driver.manage().timeouts().pageLoadTimeout(pageLoadTime, TimeUnit.SECONDS);

这段代码,加载driver.get(url)方法之前,他们等待你给定的时间,如果在给定时间内网页还是没有加载出来就会报错,如果在小于给定时间内加载完毕了,剩下的时间不再等待。

 

posted @   久曲健  阅读(661)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2017-01-14 解决服务器代码执行mvn test后在classes和test-classes下找不到Spring的bean.xml配置文件问题
点击右上角即可分享
微信分享提示