java selenium 智能等待頁(yè)面加載完成
我們經(jīng)常會(huì)碰到用selenium操作頁(yè)面上某個(gè)元素的時(shí)候, 需要等待頁(yè)面加載完成后, 才能操作。 否則頁(yè)面上的元素不存在,會(huì)拋出異常。
或者碰到AJAX異步加載,我們需要等待元素加載完成后, 才能操作
selenium 中提供了非常簡(jiǎn)單,智能的方法,來(lái)判斷元素是否存在.
閱讀目錄
實(shí)例要求
實(shí)例:set_timeout.html 下面的html 代碼, 點(diǎn)擊click 按鈕5秒后, 頁(yè)面上會(huì)出現(xiàn)一個(gè)紅色的div快, 我們需要寫一段自動(dòng)化腳本智能的去判斷這個(gè)div是否存在, 然后把這個(gè)div 然后高亮。
html> head> title>Set Timeout/title> style> .red_box {background-color: red; width = 20%; height: 100px; border: none;} /style> script> function show_div(){ setTimeout("create_div()", 5000); } function create_div(){ d = document.createElement('div'); d.className = "red_box"; document.body.appendChild(d); } /script> /head> body> button id = "b" onclick = "show_div()">click/button> /body> /html>
隱式等待
WebDriver driver = new FirefoxDriver(); driver.get("file:///C:/Users/Tank/Desktop/set_timeout.html"); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); WebElement element = driver.findElement(By.cssSelector(".red_box")); ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
其中
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
意思是, 總共等待10秒, 如果10秒后,元素還不存在,就會(huì)拋出異常 org.openqa.selenium.NoSuchElementException
顯式等待
顯式等待 使用ExpectedConditions類中自帶方法, 可以進(jìn)行顯試等待的判斷。
顯式等待可以自定義等待的條件,用于更加復(fù)雜的頁(yè)面等待條件
等待的條件 |
WebDriver方法 |
頁(yè)面元素是否在頁(yè)面上可用和可被單擊 |
elementToBeClickable(By locator) |
頁(yè)面元素處于被選中狀態(tài) |
elementToBeSelected(WebElement element) |
頁(yè)面元素在頁(yè)面中存在 |
presenceOfElementLocated(By locator) |
在頁(yè)面元素中是否包含特定的文本 |
textToBePresentInElement(By locator) |
頁(yè)面元素值 |
textToBePresentInElementValue(By locator, java.lang.String text) |
標(biāo)題 (title) |
titleContains(java.lang.String title) |
只有滿足顯式等待的條件滿足,測(cè)試代碼才會(huì)繼續(xù)向后執(zhí)行后續(xù)的測(cè)試邏輯
如果超過(guò)設(shè)定的最大顯式等待時(shí)間閾值, 這測(cè)試程序會(huì)拋出異常。
public static void testWait2(WebDriver driver) { driver.get("E:\\StashFolder\\huoli_28@hotmail.com\\Stash\\Tank-MoneyProject\\浦東軟件園培訓(xùn)中心\\我的教材\\Selenium Webdriver\\set_timeout.html"); WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".red_box"))); WebElement element = driver.findElement(By.cssSelector(".red_box")); ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element); }
以上就是對(duì)Java selenium 等待頁(yè)面加載的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!
標(biāo)簽:焦作 欽州 無(wú)錫 湘西 綏化 試駕邀約 銅陵 湖北
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《java selenium智能等待頁(yè)面加載完成示例代碼》,本文關(guān)鍵詞 java,selenium,智能,等待,頁(yè)面,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。