国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

和我一起學 Selenium WebDriver(4)——基礎篇

2019-11-06 06:40:33
字體:
來源:轉載
供稿:網友
【1、如何處理異步加載】  對于異步加載的捕獲,其實就是一個等待的過程,這在之前的例子中早已看過,只不過需要特別說明一下 WebDriverWait,當超時后就會拋出異常,所以如果你的測試中對于這個部分不需要拋出異常的話,那么最好用 try catch 包起來。這次利用 zTree 異步加載的Demo做測試,同時分別利用 WebElement 的 click 方法 和 zTree 的 expandNode 方法展開節點,進行異步加載。使用起來并不困難,直接看代碼即可。package lesson4;import static org.junit.Assert.*;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.openqa.selenium.javascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.Firefox.FirefoxDriver;import org.openqa.selenium.support.ui.ExpectedCondition;import org.openqa.selenium.support.ui.WebDriverWait;public class ExampleForAjax { static WebDriver driver; @BeforeClass public static void init() { System.out.PRintln("init..."); // 如果你的 FireFox 沒有安裝在默認目錄,那么必須在程序中設置 System.setProperty("webdriver.firefox.bin", "D://Program Files//Mozilla Firefox//firefox.exe"); // 創建一個 FireFox 的瀏覽器實例 driver = new FirefoxDriver(); } @Test public void test() { // 讓瀏覽器訪問 zTree Demo driver.get("http://www.ztree.me/v3/demo/cn/core/async.html"); // 等待 zTree 初始化完畢,Timeout 設置10秒 try { (new WebDriverWait(driver, 10, 500)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#treeDemo li').get(0);"); return element != null; } }); } catch(Exception e) { e.printStackTrace(); } ((JavascriptExecutor)driver).executeScript("window.zTreeObj = $.fn.zTree.getZTreeObj('treeDemo');"); //判斷節點總數 Long count =(Long) ((JavascriptExecutor)driver).executeScript("return window.zTreeObj.transformToArray(window.zTreeObj.getNodes()).length;"); assertTrue(count == 4); //利用 expandNode 方法展開第一個父節點 ((JavascriptExecutor)driver).executeScript("window.zTreeNode = window.zTreeObj.getNodeByParam('isParent', true); window.zTreeObj.expandNode(window.zTreeNode, true);"); try { (new WebDriverWait(driver, 10, 500)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { Boolean isAjaxing = (Boolean) ((JavascriptExecutor)driver).executeScript("return !!window.zTreeNode.isAjaxing;"); return !isAjaxing; } }); } catch(Exception e) { e.printStackTrace(); } //判斷節點總數 count =(Long) ((JavascriptExecutor)driver).executeScript("return window.zTreeObj.transformToArray(window.zTreeObj.getNodes()).length;"); assertTrue(count == 8); //模擬 click 事件 單擊節點 +/- 號展開 WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("window.zTreeNode = window.zTreeNode.children[0]; return $('#' + window.zTreeNode.tId + '_switch').get(0);"); element.click(); // 展開第一個子節點 ((JavascriptExecutor)driver).executeScript("window.zTreeObj.expandNode(window.zTreeNode, true);"); try { (new WebDriverWait(driver, 10, 500)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { Boolean isAjaxing = (Boolean) ((JavascriptExecutor)driver).executeScript("return !!window.zTreeNode.isAjaxing;"); return !isAjaxing; } }); } catch(Exception e) { e.printStackTrace(); } //判斷節點總數 count =(Long) ((JavascriptExecutor)driver).executeScript("return window.zTreeObj.transformToArray(window.zTreeObj.getNodes()).length;"); assertTrue(count == 12); } @AfterClass public static void destory() { System.out.println("destory..."); //關閉瀏覽器 driver.quit(); }}【2、如何監控 iframe】 能夠正常監控 異步加載后,對于 iframe 就只剩下一個問題了,如何用 在父窗口執行iframe 窗口內的 js 了。

對于這個問題其實很簡單, iframe 的 name 就是iframe 這個window 的對象,所以,你只需要注意把之前的window 換成 iframe 的name 就可以了;同時調用全局變量時也一定要加上這個iframe 的namepackage lesson4;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.support.ui.ExpectedCondition;import org.openqa.selenium.support.ui.WebDriverWait;public class ExampleForIframe { static WebDriver driver; @BeforeClass public static void init() { System.out.println("init..."); // 如果你的 FireFox 沒有安裝在默認目錄,那么必須在程序中設置 System.setProperty("webdriver.firefox.bin", "D://Program Files//Mozilla Firefox//firefox.exe"); // 創建一個 FireFox 的瀏覽器實例 driver = new FirefoxDriver(); } @Test public void test() { // 讓瀏覽器訪問 zTree Demo driver.get("http://www.ztree.me/v3/demo.php#_102"); // 等待 iframe 加載完畢,Timeout 設置10秒 try { (new WebDriverWait(driver, 10, 500)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { Boolean loaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return !!demoIframe.$.fn.zTree.getZTreeObj('treeDemo');"); return loaded; } }); } catch(Exception e) { e.printStackTrace(); } ((JavascriptExecutor)driver).executeScript("demoIframe.zTreeObj = demoIframe.$.fn.zTree.getZTreeObj('treeDemo');"); //利用 expandNode 方法展開第2個根節點 ((JavascriptExecutor)driver).executeScript("demoIframe.zTreeNode = demoIframe.zTreeObj.getNodes()[1]; demoIframe.zTreeObj.expandNode(demoIframe.zTreeNode, true);"); // 等待 5 秒 try { (new WebDriverWait(driver, 5, 1000)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return false; } }); } catch(Exception e) {} } @AfterClass public static void destory() { System.out.println("destory..."); //關閉瀏覽器 driver.quit(); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 商丘市| 天等县| 南京市| 泰安市| 嘉黎县| 渭南市| 唐山市| 扶绥县| 新巴尔虎左旗| 临桂县| 砀山县| 金塔县| 赤壁市| 普陀区| 江都市| 昌平区| 呼玛县| 旬阳县| 楚雄市| 丹寨县| 根河市| 潮州市| 南皮县| 新昌县| 淅川县| 枣阳市| 溧水县| 富锦市| 河间市| 南木林县| 通海县| 曲阳县| 通河县| 湄潭县| 左贡县| 固阳县| 旅游| 原平市| 溧水县| 和田县| 西吉县|