当前位置: 首页 > 知识库问答 >
问题:

isElementPresent在if元素不存在的情况下非常慢。

齐驰
2023-03-14
private boolean isElementPresent(By by) {
try {       
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
        return false;
    }
    catch (Exception e)
    {       
        return false;
    }

  }
isElementPresent(By.xpath(".//*[@id='header']")));

如果这是存在的,这个函数很快完成,但如果上面不存在,那么它运行很长时间。

有人能帮我解决这个问题吗?这样检查就可以很快进行了?

共有1个答案

夏侯自珍
2023-03-14

在这里,你错过了一些东西,这就是为什么它等待,如果没有元素。findElement将等待元素隐式指定的时间。所以需要在该方法中将时间设置为零。

isElementPresent(WebDriver driver, By by) {  
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);  
    try {  
        driver.findElement(by);  
        return true;  
    } catch (NoSuchElementException e) {  
        return false;  
    } finally {  
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);  
    }  
}

这里有4件重要的事情在进行。按顺序:

>

  • 将implicity_wait设置为0,以便WebDriver不会隐式等待。

  •  类似资料:
    • 问题内容: 我正在使用以下代码检查网页上的元素 我需要检查程序是否在特定区域中显示了如下结果 如果存在此功能,则该功能将快速完成,但是如果不存在以上功能,则它将运行很长时间。 有人可以帮我解决这个问题,以便快速进行检查吗? 问题答案: 在这里,您缺少了某些东西,这就是为什么它在等待的原因如果没有元素。findElement将等待元素隐式指定的时间。因此需要在该方法中将该时间设置为零。 这里有4件重

    • 在我正在测试的页面中,可能会显示两个按钮:BASIC或Advanced。 我想知道高级按钮是否显示--如果显示,请单击它。

    • 问题内容: 我正在尝试编写一个脚本,该脚本需要根据CSS选择器找到的特定浏览器对象是否存在来适应其工作流程行为。 我不想使用document.getElementByID方法,因为从技术上讲,这不是CSS选择器,并且我们整个企业都在CSS选择器上进行了标准化,因此在DOM以外的其他任何选择都不会使CSS选择器超出我们的代码审查过程无论如何。 ThingSelector在哪里: OpenThing在

    • 问题内容: 我想解组一个包含数据集合的xml文件,像这样 我们知道这可以通过两个类完成:人员,使用Castor的人员,JAXB或其他框架。 但是,如果不编写收集类的Persons怎么办? 问题答案: 寻找一种方法来告诉Castor您希望它生成一个Person实例。 http://www.castor.org/how-to-map-a-list-at- root.html

    • 我真的需要有人帮忙。我有非常非常奇怪的代码,即使只写2个单元格也要花35秒。(两倍于智能手机等设备)。 注:在计算过程中,这两种方法都没有问题。他们挺快的。不需要调试这些 null null

    • 问题内容: 这是我的json: 有什么方法可以在不知道键是什么的情况下访问此数组中的键和值(在javascript中)? 我的json这样构造的原因是,我通过jquery调用的网络方法正在返回字典。如果无法使用上述方法,那么我需要对返回数据的方式进行哪些更改? 这是我的网络方法的概述: 问题答案: 您可以使用该构造遍历对象的任意属性: