如果我的问题听起来很主要,我很抱歉,我在QA和Selenium方面很新。等待网页元素的好方法
我使用Java和硒编写测试,有时我需要等待网络元素是可访问的,下面是我的代码片段,我曾经使用:
int counter = 0;
while (true) {
counter++;
boolean breakIt = false;
try {
WebElement element= driverChrome.findElement(By.xpath("bla bla"));
element.click();
breakIt = true;
} catch (Exception e) {
Thread.sleep(1000);
}
if (breakIt) {
break;
}
if (counter > 4) {
System.out.println("Failed");
tearDown();
System.exit(1);
}
}
但现在某处我看到这一点:
WebDriverWait wait = new WebDriverWait(driverChrome, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("bla bla"))).click();
肯定的,第二个是要短得多,但我不知道这是否是好是坏,换句话说,它们有什么不同?如果是,如何?哪一个更适合哪种用途?
使用WebDriverWait始终是睡眠语句的理想选择。一旦元素被加载,它就会立即变得难以处理,而不是等待一定的时间。特别是如果你有很多利用相同步骤的测试,从长远来看可以节省大量时间。 – AutomatedOrder
@AutomatedOrder感谢您的回复,请将其作为回答发布?如果你知道,你能告诉我在哪里可以学到更多关于ExpectedConditions的知识。方法? – LoveLovelyJava
可能重复的[Selenium等到元素存在](http://stackoverflow.com/questions/20903231/selenium-wait-until-element-is-present) – JeffC