selenium 延迟等待的三种方式

本文详细介绍了使用Selenium进行Web自动化测试时,如何实现元素延迟等待的三种方式,包括使用WebDriverWait配合ExpectedConditions,确保元素定位的准确性,有效避免因页面加载不完全导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、最直接普通的方式:这个是设置固定的等待时间
   Thread.sleep(1000);   
2、隐式等待方式( implicitlyWait ):设置脚本在查找元素时的最大等待时间;
   driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);    
代码示例如下
    public boolean isByElementDisplayed(By byint time,WebDriver chrome) {
        boolean status = true;
        while(!isByPresent(chromeby)){
            chrome.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        }
        return status;      
    }
    
    public boolean isByPresent(WebDriver chrome, By by){
        boolean display = false;
        try{
            chrome.findElement(by).isDisplayed();
            return displaytrue;
        }catch(NoSuchElementException e){
            return display;
        }
    }  
这里用while循环是如果明确需要查找的元素未找到,就继续循环等待;
3、显示等待方式 (Explicit Wait) 就是明确的要等待的元素 在规定的时间之内都没找到 , 那么就抛出 Exception. 代码示例如下:

new WebDriverWait(chrome, 15).until(

ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))

);     
这里,15是要等待的秒数.如果没有满足until()方法中的条件,就会始终在这里wait 15,依然找不到,就抛出异常 。

还可以这样写:

    WebDriver chromenew  ChromeDriver()  ;
     chrome . get(  http : //somedomain/url_that_delays_loading);
    WebElement e = (new WebDriverWait( chrome, 10)) .until(
        new ExpectedCondition< WebElement>(){
              @Override    //方法重写
            public WebElement  ByPresent ( WebDriver d) {
                return d.findElement( By.id("id locator"));
            }
        }
    );   

这样就通过回调函数,直接获得了这个WebElement.也就是页面元素 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值