gpt4 book ai didi

selenium - 如果元素不存在,isElementPresent 会非常慢。

转载 作者:行者123 更新时间:2023-12-02 21:14:05 25 4
gpt4 key购买 nike

我正在使用下面的代码来检查我的网页上的元素

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']")));

如果存在此功能,则该功能会快速完成,但如果不存在上述功能,则它会运行很长时间。

有人可以帮我解决这个问题,以便可以快速执行此检查吗?

最佳答案

这里你错过了一些东西,这就是为什么它在等待如果没有元素。 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 件重要的事情。按顺序:

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

  2. 找到元素时返回 True。

  3. 当我们发现该元素不存在时,捕获 NoSuchElementException 并返回 False,而不是因异常而停止测试。

  4. 操作完成后将implicitly_wait设置回30,以便WebDriver将来隐式等待。

关于selenium - 如果元素不存在,isElementPresent 会非常慢。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com