如果我的問題聽起來很主要,我很抱歉,我在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