java - 使用 List<Web Element> 会严重减慢脚本速度

标签 java eclipse webdriver testng

我使用以下代码在登录失败时断言错误消息。使用此代码,我成功地获得了结果,但它使我的脚本太慢。

List<WebElement> errorDivs = driver.findElements(By.xpath("//div[@class='errorMsg']"));
if (!errorDivs.isEmpty()) {
   System.out.println("Username Or Password is Incorrect" + username);
   // pick first one and use as main failure reason
   Assert.fail(errorDivs.get(0).getText());
}

最佳答案

在 WebDriver 中,findElement、findElements 如果未找到指定元素,将隐式等待,直到达到 TIMEOUT 限制。这就是为什么如果错误 div 不存在,您的脚本就会等待。您可以使用自己的逻辑来检查元素是否存在,而不是直接使用 findElements 。

逻辑如下

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

引用http://goo.gl/lw0gDa

关于java - 使用 List<Web Element> 会严重减慢脚本速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138998/

相关文章:

java - 具有超时的 invokeAll 和 InvokeAny 调用是否指定了 ThreadPoolExecutor 中配置的覆盖设置?

java - Tomcat 7.0.50 启动时属性的值部分中的无效字符 ':'

testing - 如何在 NUnit 和 C# 中共享一个 Selenium webdriver 实例?

c# - Selenium 2.0 WebDriver 高级交互 DoubleClick 帮助 (c#)

android - 在多个项目之间共享 Assets

ruby - Selenium找不到元素时如何恢复

java - Android - Firebase - 从节点 X 检索数据并将其发送到节点 Y

java - 以下代码中出现 "Number format exception/empty string"错误的原因是什么?

javascript - FB.logout() 不适用于 Angular/ionic 3

java - 如何保存用户的区域设置(在应用程序中)?