1. 程式人生 > >元素的多種延時等待

元素的多種延時等待

有時候頁面元素不是當下就出現的,這個時候就需要等待元素出現後再繼續後面的操作了。

/**

* 1. 執行緒休眠---Thread.sleep(long millis);

* 強制等待,硬性等待--不確定具體需要等待多久時間的時候,容易造成時間的浪費

* 例子:Thread.sleep(2000);

* 2. 隱式等待---TimeOuts--implicitlyWait

* 設定方式:driver.manage.timeouts().implictlyWait(long time,TimeUnit unit)

* 例子:driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

* 特點:相對靈活(優),設定是針對全域性的,在WebDriver例項整個生命週期有效,但並不是所有元素都需要等待(缺)

* 3. 顯式等待--可以自己指定某個元素需要等待(在有必要進行等待的時候再執行等待)

* 每隔0.5秒掃描一次頁面,檢查元素是否滿足等待結果條件,比如查詢元素,則檢查元素是否存在,存在的話返回true,不存在則繼續等待,知道找到或超時。

* 特點:不是針對全域性的,只有需要進行等待的元素才執行等待,可以自己設定場景(條件),條件滿足時再繼續執行

*/

顯式等待的程式碼如下:

/**

* 智慧查詢元素方法,設定任意等待時間

* @param by

* @param timeOutInSeconds

* @return

*/

public WebElement getElement(By by,long timeOutInSeconds) {

  WebDriverWait wait=new WebDriverWait(driver, timeOutInSeconds);

  WebElement element=wait.until(new ExpectedCondition<WebElement>() {

    public WebElement apply(WebDriver driver) {

      return driver.findElement(by);

    }

   });

  return element;

  }

/**

* 智慧查詢元素方法,設定等待時間為5s

* @param by

* @return

*/

public WebElement getElement(By by) {

  return getElement(by,5);

}