java selenium智能等待頁(yè)面加載完成示例代碼
java selenium 智能等待頁(yè)面加載完成
我們經(jīng)常會(huì)碰到用selenium操作頁(yè)面上某個(gè)元素的時(shí)候, 需要等待頁(yè)面加載完成后, 才能操作。 否則頁(yè)面上的元素不存在,會(huì)拋出異常。
或者碰到AJAX異步加載,我們需要等待元素加載完成后, 才能操作
selenium 中提供了非常簡(jiǎn)單,智能的方法,來(lái)判斷元素是否存在.
閱讀目錄
- 實(shí)例要求
- 隱式等待
- 顯式等待
實(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ì)本站的支持!
- Java selenium截圖操作的實(shí)現(xiàn)
- selenium+java+chrome環(huán)境搭建的方法步驟
- java+selenium實(shí)現(xiàn)自動(dòng)化打開(kāi)頁(yè)面的方法
- selenium+java破解極驗(yàn)滑動(dòng)驗(yàn)證碼的示例代碼
- Java selenium處理極驗(yàn)滑動(dòng)驗(yàn)證碼示例
- java selenium 操作彈出窗口示例代碼
- java selenium操作彈出對(duì)話框示例講解
- java selenium 操作瀏覽器實(shí)例
- selenium+java中用js來(lái)完成日期的修改
相關(guān)文章
ASP.NET?Core?MVC緩存Tag?Helpers到內(nèi)存
這篇文章介紹了ASP.NET?Core?MVC緩存Tag?Helpers到內(nèi)存的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02MVC4制作網(wǎng)站教程第四章 前臺(tái)欄目瀏覽4.5
這篇文章主要為大家詳細(xì)介紹了MVC4制作網(wǎng)站教程,前臺(tái)欄目瀏覽功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08.NET Core跨平臺(tái)串口通訊使用SerialPortStream基礎(chǔ)類庫(kù)問(wèn)題解決
這篇文章介紹了.NET Core跨平臺(tái)串口通訊使用SerialPortStream基礎(chǔ)類庫(kù)問(wèn)題解決,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01asp.net(C#)防sql注入組件的實(shí)現(xiàn)代碼
經(jīng)常要寫一些.net的程序,對(duì)于數(shù)據(jù)庫(kù)的防注入要求要比較高。這時(shí)我從網(wǎng)上搜了一些代碼。查看了一下主要是通過(guò)HTTPModel來(lái)進(jìn)行對(duì)客戶端轉(zhuǎn)過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理。2009-12-12.Net中實(shí)現(xiàn)無(wú)限分類的2個(gè)例子
這篇文章主要介紹了.Net中實(shí)現(xiàn)無(wú)限分類的2個(gè)例子,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-02-02.Net Core 2.2升級(jí)3.1的避坑指南(小結(jié))
這篇文章主要介紹了.Net Core 2.2升級(jí)3.1的避坑指南,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07ADO.NET實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫(kù)的增刪改查示例
本篇文章主要介紹了ADO.NET實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫(kù)的增刪改查示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-01-01