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(); } }
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(); } }
今天主要接觸了 switchTo 方法,使用這個方法,就能夠直接切換到 iframe 窗口內,切換後使用js 時就能夠把 iframe 當作當前的主窗口來使用了 php
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(); } }