当前位置: 首页 > 面试题库 >

如果元素不存在,则isElementPresent非常慢。

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

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

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


问题答案:

在这里,您缺少了某些东西,这就是为什么它在等待的原因如果没有元素。findElement将等待元素隐式指定的时间。因此需要在该html" target="_blank">方法中将该时间设置为零。

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将来可以隐式等待。



 类似资料:
  • 如果这是存在的,这个函数很快完成,但如果上面不存在,那么它运行很长时间。 有人能帮我解决这个问题吗?这样检查就可以很快进行了?

  • 问题内容: 我有一个带有2个表的数据库,如下所示: 列是,并且是 和 在申请表中,我有2个编辑框,名称分别为和 如果用户像电子邮件一样插入一个新的负责人姓名, 那么在保存表格的过程中,我想将新的负责人姓名插入表中,请插入最后一个并将其更新为。 如果用户保持名称,但它更新电子邮件一样,然后我想在从1 =使用新的电子邮件地址和他们(其余和)保持不变。 如果负责人的名称相同,我想保留from表的原始引用

  • 问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。

  • 问题内容: 我在使用SQL查询时遇到问题。如果同一行尚不存在,我需要插入一行。这是我到目前为止的内容: 我对sql不太熟悉,尤其是不存在的语法,因此在执行时会出现以下错误: ORA-06550:第37行,第11列:PLS-00103:在预期以下情况之一时遇到了符号“ INSERT”: 然后和或 用“ then”符号代替“ INSERT”继续。 following: the following: 问

  • 您好帮助请把xml文件放在里面一些相同的元素,这些元素的内容不同,“name”属性。这些元素有不同的项目集,如何进行解咒?断续器: 我需要在Cdb和FmssSc中执行对象2的解组。我的尝试:通用元素-ServiceBroker.class 适配器.class Cdb.class FmssSc.class 演示: 错误: