Selenium學習(五)----selenium的顯式等待和隱式等待

      在寫自動化腳本時,有時候操作過快會導致定位不到元素,這時就需要加上等待時間啦,下面就介紹等待時間的三種情況:
      selenium有三種等待形式:

  • 強制等待(比較常用)

Thread.sleep(1000);

  • 顯式等待
    需要增加一定等待時間,顯式等待時間可以通過WebDriverWait和Util來決定。比如這個timeout是60,如果該元素60s以內出現就不再等待。
    顯示等待是針對於某個特定的元素設置的等待時間,如果在規定的時間範圍內,沒有找到元素,則會拋出異常,如果在規定的時間內找到了元素,則直接執行,即找到元素就執行相關操作。

WebDriverWait wait = new WebDriverWait(driver,60,1)
// 每隔1秒去調用一下until中的函數,默認是0.5秒,如果等待60秒還沒有找到元素 。則拋出異常。
    wait.until(new Expectedcondition(){
       public WebElement apply(WebDriver driver) {
            driver.findElement(By.id(“kw”));
            return driver.findElement(By.id(“kw”)); }
)}

  • 隱式等待
    是設置的全局等待,分爲1、頁面加載超時等待 ;2、頁面元素加載超時;3、異步腳本超時。
    如果是頁面元素超時,設置等待時間,是對頁面中的所有元素設置加載時間。

//頁面加載超時時間設置爲5s
driver.manage().timeouts().pageLoadTimeout(5,TimeUnit.SECONDS);
driver.get(“https://www.baidu.com/”);
//定位對象時給10s的時間, 如果10s內還定位不到則拋出異常
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.findElement(By.id(“kw”)).sendKeys(“隱式等待”);
//異步腳本的超時時間設置成3s
driver.manage().timeouts().setScriptTimeout(3,TimeUnit.SECONDS);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章