使用List <web element =“”>严重减慢脚本</web>

时间:2014-06-10 10:43:51

标签: 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());
}

2 个答案:

答案 0 :(得分:2)

在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

答案 1 :(得分:1)

我对人们(不一定是你自己)感到沮丧,他们说xpath使用不好而不理解为什么。当更具表现力的CSS选择器无法实现您想要的效果时,Xpath是选择器的绝佳选择。