1. 程式人生 > >【selenium】 隱式等待與顯示等待

【selenium】 隱式等待與顯示等待

簡介:總結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;
	}