您好,登錄后才能下訂單哦!
在運行automation時候,經常會遇到的問題是,頁面的元素加載需要時間,而這個時間是不確定的,但是你的執行是一直在一步步往下走,如果實際頁面等待時間過長導致某個dom元素還沒出來,但是你的代碼直接使用了這個WebElement,那么就會拋出NullPointer的異常。
為了解決這種問題,尤其是RemoteWebDriver(不確定因素更多的情況) ,我們就需要用很高級的WebDriverWait的功能。
簡而言之,這個WebDriverWait就是等待到某個條件的滿足之下然后再繼續往下走。
貼上樣例代碼:
WebDriverWait wait = new WebDriverWait(getWebDriver(), 3); wait.until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver webDriver) { return !justification.getAttribute("class").contains("x-form-invalid-field"); } });
這段代碼是干什么呢,它是說,默認讓webDriver最多等3秒,直到頁面上叫justification的WebElement元素的樣式不包含x-form-invalid-field.
分析:
這是什么意思呢?很簡單,因為我們的頁面上每個字段都加了js表單驗證,如果這個頁面上的元素輸入錯誤,就會有一個紅色的框框提示用戶非法輸入,這個紅色框框的樣式就是x-form-invalid-field,所以我們的作用就是等這個紅色的框框消失,然后再進行下一步的操作。
如下圖:
因為這個justification的WebElement是強制用戶輸入的,如果用戶不輸入,就有個紅色框框:
然后這個紅色的框框的樣式包含x-form-invalid-field,如下圖:
所以現在十分清楚了,我們的目的就是在運行automation testcase時候讓這個紅色框框消失。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。