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

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

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

2019-11-06 06:40:27
字體:
來源:轉載
供稿:網友
前面的學習已經讓我們可以輕松的運行js、點擊節點,下面該學習如何控制 alert、confirm 和 彈出窗口這些了【1、如何處理 confirm 和 alert】  處理 confirm、alert 其實很簡單,只需要利用 WebDriver 的 switchTo().alert() 方法就可以輕松切換到 alert 對象 Alert,進行控制。我們直接利用 高級增刪改查 的Demo 測試 alert 和 confirm,順便還使用 sendKeys 進行文字錄入的操作package lesson5;import static org.junit.Assert.*;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.openqa.selenium.Alert;import org.openqa.selenium.javascriptExecutor;import org.openqa.selenium.Keys;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 ExampleForAlert { 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/exedit/edit_super.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');" + "window.zTreeNode = window.zTreeObj.getNodes()[0];" + "window.zTreeObj.selectNode(window.zTreeNode);"); //點擊編輯按鈕,彈出 confirm WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_edit').get(0);"); element.click(); //第一次點擊取消 Alert alert = driver.switchTo().alert(); System.out.println(alert.getText()); alert.dismiss(); element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_input').get(0);"); assertNull(element); //點擊編輯按鈕,彈出 confirm element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_edit').get(0);"); element.click(); //第二次點擊確定 alert = driver.switchTo().alert(); alert.accept(); element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_input').get(0);"); assertNotNull(element); //修改name for (int i=0, j=element.getAttribute("value").length(); i<j; i++) { element.sendKeys(Keys.BACK_SPACE); } element.sendKeys(Keys.RETURN); //確定 提示信息 alert = driver.switchTo().alert(); alert.accept(); //修改name element.sendKeys("test"); element.sendKeys(Keys.RETURN); String newName = (String) ((JavascriptExecutor)driver).executeScript("return window.zTreeNode.name"); assertEquals(newName, "test"); } @AfterClass public static void destory() { System.out.println("destory..."); //關閉瀏覽器 driver.quit(); }}【2、如何處理 彈出頁面】 彈出窗口的捕獲,同樣需要利用 switchTo 方法,這里面需要注意的是——新彈出窗口后,還是要稍微等待一下;如果不等待一會兒,直接獲取新窗口的 url 你會得到 about:blank 這樣的結果package lesson5;import java.util.Iterator;import java.util.Set;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 ExampleForNewWindow { 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/url.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');" + "window.zTreeNode = window.zTreeObj.getNodes()[0];"); //點擊第一個節點,彈出 zTree 官網 WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#' + window.zTreeNode.tId + '_a').get(0);"); element.click(); //等待5秒,確保新頁面加載完畢 try { (new WebDriverWait(driver, 5, 1000)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return false; } }); } catch(Exception e) {} //當前窗口的 Handle String curWindow = driver.getWindowHandle(); //全部窗口的 Handle 集合 Set<String> wins = driver.getWindowHandles(); Iterator<String> itWin = wins.iterator(); while(itWin.hasNext()) { String key = itWin.next(); if (curWindow.equals(key)) { continue; } WebDriver newDriver = driver.switchTo().window(key); System.out.println("new Window: " + newDriver.getCurrentUrl()); } } @AfterClass public static void destory() { System.out.println("destory..."); //關閉瀏覽器 driver.quit(); }}【3、另一種切換到 iframe 的方法】

今天主要接觸了 switchTo 方法,使用這個方法,就可以直接切換到 iframe 窗口內,切換后使用js 時就可以把 iframe 當做當前的主窗口來使用了

package lesson5;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 ExampleForIframe2 { 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(); } driver.switchTo().frame("demoIframe"); ((JavascriptExecutor)driver).executeScript("window.zTreeObj = $.fn.zTree.getZTreeObj('treeDemo');"); //利用 expandNode 方法展開第2個根節點 ((JavascriptExecutor)driver).executeScript("window.zTreeNode = window.zTreeObj.getNodes()[1]; window.zTreeObj.expandNode(window.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(); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 商水县| 尖扎县| 原平市| 共和县| 乌拉特中旗| 广南县| 雷州市| 大丰市| 泾川县| 青浦区| 独山县| 额尔古纳市| 奉节县| 阜阳市| 甘谷县| 荔浦县| 岐山县| 神木县| 濮阳县| 客服| 旅游| 疏勒县| 曲水县| 浮山县| 河源市| 彭阳县| 娱乐| 邵阳县| 固阳县| 分宜县| 安西县| 环江| 天峻县| 凤翔县| 铜鼓县| 锦州市| 达州市| 讷河市| 武冈市| 阿合奇县| 石阡县|