何時(shí)在Selenium Webdriver中使用顯式等待vs隱式等待?我在用:driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS);但是對(duì)于下面的元素,它仍然會(huì)不斷失敗 driver.findElement(By.id("name")).clear();
driver.findElement(By.id("name")).sendKeys("Create_title_01");我添加了等待代碼:for (int second = 0;; second++) {
if (second >= 120) fail("timeout");
try { if (isElementPresent(By.id("name"))) break; } catch (Exception e) {}
Thread.sleep(1000);
}不應(yīng)該隱含等待,直到找到一個(gè)元素?如果我使用顯式等待而不是我添加的代碼,它會(huì)更好Thread.sleep()嗎?
3 回答

素胚勾勒不出你
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
隱式等待 - 它是適用于所有元素的全局設(shè)置,如果元素在指定時(shí)間之前出現(xiàn),則腳本將開始執(zhí)行,否則腳本將拋出NoSuchElementException
。在setup方法中使用的最佳方法。只影響By.findelement()
。
Thread.sleep()
- 它將為腳本休眠時(shí)間,而不是在腳本中使用的好方法,因?yàn)樗鼰o條件地睡眠。如果5%的情況下2秒不夠怎么辦?
顯式等待:等待指定包含/屬性更改。當(dāng)應(yīng)用程序向系統(tǒng)提供AJAX調(diào)用并獲取動(dòng)態(tài)數(shù)據(jù)并在UI上呈現(xiàn)時(shí),會(huì)使用更多。在這種情況下WebDriverWait
是合適的。
添加回答
舉報(bào)
0/150
提交
取消