[Selenium]显式等待 Explicit wait & 隐式等待 Implicit wait
显式等待 Explicit wait
显示等待 , 就是明确的要等到某个元素出现或者某个元素满足某种条件,每隔一段时间检查一次,等不到,就一直等,如果在规定的时间内还没有找到,就跳出来
检查间隔的时间和等待的最大时间可以自定义。
等待某个元素的Y坐标满足某个条件,等待时间采用系统默认的时间
1 2 3 4 5 6 7 8 9 | Function<WebDriver, Boolean> waitFn = new Function<WebDriver, Boolean>() { @Override public Boolean apply(WebDriver driver) { Point newPos = page.getWDGAttrDetail().getLocation(); return newPos.getY() != prePos.getY(); } }; SeleniumUtil.createWait(page.getDriver()).until(waitFn); |
等待某个元素存在,最多等10秒
1 | WebElement myDynamicElement = ( new WebDriverWait(driver, 10 )) .until(ExpectedConditions.presenceOfElementLocated(locator)) |
等待某个元素可点击,最多等10秒
1 | new WebDriverWait(driver, 10 ). until(ExpectedConditions.elementToBeClickable(locator)); |
等待某个元素可见,最多等10秒
1 | new WebDriverWait(driver, 10 ). until(ExpectedConditions.visibilityOf(locator)); |
等待某个元素出现,每隔1s检查一次,最多等待120秒,等不到报错,提供错误信息
1 2 3 4 5 6 7 8 9 10 | //wait for processing icon present Function<WebDriver, WebElement> waitFn = new Function<WebDriver, WebElement>() { @Override public WebElement apply(WebDriver driver) { return el.findElement(By.cssSelector( "div.rptstatus.rptcomplete" )); } }; WebDriverWait wait = new WebDriverWait(driver, 120 , 2 ); wait.withMessage( "A processing icon should appear in the Status column of the row '" +templateName+ "'." ); wait.until(waitFn); |
隐式等待 Implicit wait
隐式等待, 可以认为是一个全局的超时时间,它的影响是全局的,每次Driver找不到元素都会执行隐式等待
1 | driver.manage().timeouts().implicitlyWait( 10 , TimeUnit.SECONDS) |
分类:
Selenium
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现