今天主要接觸了 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(); }}新聞熱點
疑難解答