我使用以下代码在登录失败时断言错误消息。使用此代码,我成功地获得了结果,但它使我的脚本太慢。
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);
}
}
关于java - 使用 List<Web Element> 会严重减慢脚本速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138998/