在運(yùn)行automation時(shí)候,經(jīng)常會(huì)遇到的問題是,頁面的元素加載需要時(shí)間,而這個(gè)時(shí)間是不確定的,但是你的執(zhí)行是一直在一步步往下走,如果實(shí)際頁面等待時(shí)間過長導(dǎo)致某個(gè)dom元素還沒出來,但是你的代碼直接使用了這個(gè)WebElement,那么就會(huì)拋出NullPointer的異常。
云南ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
為了解決這種問題,尤其是RemoteWebDriver(不確定因素更多的情況) ,我們就需要用很高級(jí)的WebDriverWait的功能。
簡而言之,這個(gè)WebDriverWait就是等待到某個(gè)條件的滿足之下然后再繼續(xù)往下走。
貼上樣例代碼:
WebDriverWait wait = new WebDriverWait(getWebDriver(), 3); wait.until(new ExpectedCondition() { public Boolean apply(WebDriver webDriver) { return !justification.getAttribute("class").contains("x-form-invalid-field"); } });
這段代碼是干什么呢,它是說,默認(rèn)讓webDriver最多等3秒,直到頁面上叫justification的WebElement元素的樣式不包含x-form-invalid-field.
分析:
這是什么意思呢?很簡單,因?yàn)槲覀兊捻撁嫔厦總€(gè)字段都加了js表單驗(yàn)證,如果這個(gè)頁面上的元素輸入錯(cuò)誤,就會(huì)有一個(gè)紅色的框框提示用戶非法輸入,這個(gè)紅色框框的樣式就是x-form-invalid-field,所以我們的作用就是等這個(gè)紅色的框框消失,然后再進(jìn)行下一步的操作。
如下圖:
因?yàn)檫@個(gè)justification的WebElement是強(qiáng)制用戶輸入的,如果用戶不輸入,就有個(gè)紅色框框:
然后這個(gè)紅色的框框的樣式包含x-form-invalid-field,如下圖:
所以現(xiàn)在十分清楚了,我們的目的就是在運(yùn)行automation testcase時(shí)候讓這個(gè)紅色框框消失。