美文网首页
WebDriver 中如何检查一个元素是否存在?

WebDriver 中如何检查一个元素是否存在?

作者: runewbie | 来源:发表于2019-11-21 09:10 被阅读0次

    起因:最近自做一个UI自动化注册的事情,在使用 WebDriver 的过程中遇到了页面元素可能不存在的问题,因为元素不存在,再执行元素的相关操作的时候就会超时等待和抛出异常,所以为了处理不存在,就是用了 try / catch 的方式处理了一下,如果 try 中的不存在,那就执行 catch 中的代码逻辑。

    try {
        driver.findElement(By.id("element_a")).click();
    } catch (NoSuchElementException e) {
        driver.findElement(By.id("element_b")).click();
    }
    

    上面的代码存在的问题:

    1、代码不美观
    2、使用 try / catch 时如果元素不存在,等待的时间很长,大约需要30秒,这样的速度实在是影响效率

    思考:

    真的只有使用try / catch 唯一可能的方式?

    解决办法:

    可以使用 driver.findElements( By.id("element") ).size() != 0 来判断元素是否存在,可以避免 try / catch,提高代码执行效率

    // 设置超时等待为0毫秒
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS);
    boolean elementExists;
    // 利用seiz()方法来判断元素是否存在
    elementExists = driver.findElements( By.id("element_a") ).size() != 0;
    if(elementExists){
        driver.findElement(By.id("element_a")).click();
    }else{
        driver.findElement(By.id("element_b")).click();
    }
    // 重新设置默认的超时等待时间
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    

    相关文章

      网友评论

          本文标题:WebDriver 中如何检查一个元素是否存在?

          本文链接:https://www.haomeiwen.com/subject/psluvctx.html