【selenium】 隱式等待與顯示等待
阿新 • • 發佈:2018-12-01
簡介:總結selenium的隱式等待與顯式等待
隱式等待
設定一個預設的操作等待時間,即每個操作的最大延時不超過該時間
- 常用的隱式等待
//頁面載入超時時間 driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS); //元素定位超時時間 driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); //非同步指令碼超時時間 driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
顯式等待
- 顯式等待就是在設定的時間之內,要等到滿足某個元素的某個條件,該條件滿足後就往下執行程式碼,如果超出設定的時間還沒滿足條件,那麼就丟擲Exception。
- 顯式等待使用ExpectedConditions類中的方法, 可以設定顯試等待的條件
- ExpectedConditions方法
方法 | 描述 |
---|---|
elementToBeClickable(By locator) | 頁面元素是否在頁面上可用和可被單擊 |
elementToBeSelected(WebElement element) | 頁面元素處於被選中狀態 |
presenceOfElementLocated(By locator) | 頁面元素在頁面中存在 |
textToBePresentInElement(By locator) | 在頁面元素中是否包含特定的文字 |
textToBePresentInElementValue(By locator, java.lang.String text) | 頁面元素值 |
titleContains(java.lang.String title) | 標題 (title) |
- 使用例項
/**
* 判斷元素是否存在
* @param driver
* @param ele 等待的元素
* @return boolean 是否存在
*/
public static boolean isElementExsit(WebElement ele,WebDriver driver) {
boolean flag ;
try {
WebDriverWait wait = new WebDriverWait(driver,20);
WebElement element = wait.until(ExpectedConditions.visibilityOf(ele));
flag = element.isDisplayed();
} catch (Exception e) {
flag = false;
System.out.println("Element:" + ele.toString()
+ " is not exsit!");
}
return flag;
}
/**
* 通過元素的Xpath,等待元素的出現,返回此元素
* @param driver
* @return 返回等待的元素
*/
public static WebElement waitByXpath(String xpath,WebDriver driver){
WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
//presenceOfElementLocated:顯示等待,頁面元素在頁面中存在,不用等頁面全部載入完
WebElement targetElement = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath)));
return targetElement;
}