方式1:
線程等待:Thread.sleep(xxxx)
只要在case中加入sleep就會強制等待設置的時間后才會執行之后的命令,這種等待一般適用於調試腳本的時候。
java代碼
//等待3秒 Thread.sleep(3000); //完全退出瀏覽器 driver.quit();
方式2:
隱試等待:driver.manage().timeouts().implicitlyWait(xx, TimeUnit.SECONDS)
隱式等待,是設置的全局等待。設置等待時間,是對頁面中的所有元素設置加載時間,如果元素不是馬上就能定位成功就會在固定等待時長內不停去搜索元素,在設置時間內發現元素則執行后面操作,如果超出了設置的時間還沒發現元素則拋出異常。隱式等待可以理解成在規定的時間范圍內,瀏覽器在不停的刷新頁面,直到找到相關元素或者時間結束。
java代碼
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe"); driver=new ChromeDriver(); //隱試等待 10秒 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
方式3:
顯示等待: new WebDriverWait(driver, xx).until(ExpectedConditions.presenceOfElementLocated(By))
顯示等待是等待指定元素設置的等待時間,在設置時間內,默認每隔0.5s檢測一次當前的頁面這個元素是否存在,如果在規定的時間內找到了元素則執行相關操作,如果超過設置時間檢測不到則拋出異常。默認拋出異常為:NoSuchElementException。做自動化的時候推薦使用顯示等待
java代碼
driver.get("http://www.baidu.com"); //聲明一個Action對象 Actions action=new Actions(driver); //鼠標移動到 更多產品 上 action.moveToElement(driver.findElement(By.xpath("//a[text()='更多產品']"))).perform(); //顯示等待時間10s 等 全部產品>> 出現 WebDriverWait w=new WebDriverWait(driver,10); w.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//a[text()='全部產品>>']"))); //等待的元素出現后點擊 音樂 WebElement cp=driver.findElement(By.xpath("//a[text()='音樂']")); cp.click(); //斷言音樂頁面的Title值為 千千音樂-聽見世界 Assert.assertEquals("千千音樂-聽見世界",driver.getTitle());