1.原窗口打開新頁面
這種方式WindowHandle值不會有改變,可以直接繼續操作
2.新窗口打開新頁面
//記錄現在這個窗口的值,儘量在未打開前記錄下來
String oldWin = driver.getWindowHandle();
//獲取當前所有窗口的值,並使用新的值跳轉到新窗口去
Set<String> newWin = driver.getWindowHandles();
for(String str : newWin )
{
if(!str.equals(oldWin))
{
driver.switchTo().window(str);
}
}
3.同一頁面不同frame
//獲取到frame節點元素,然後使用driver.switchTo().frame(ele);
WebElement ele = driver.findElement(By.id("iframe"));
driver.switchTo().frame(ele);
此處要注意:假設有個頁面結構如下
<body><iframe id='parent'><iframe id='child'></iframe></iframe></body>
(1)我們開始在<body>裏面操作,現在要轉移到parent裏面。代碼如下:
WebElement ele = driver.findElement(By.id("parent"));
driver.switchTo().frame(ele);
(2)現在要回到<body>裏面
driver.switchTo().defaultContent();
(3)要跳轉到child裏面
WebElement ele = driver.findElement(By.id("child"));
driver.switchTo().frame(ele);
<span style="color:#ff0000;"><span style="font-size: 24px;"><strong> </strong></span></span><span style="font-size:14px;">@Test
public void windowsSwitchT() {
driver.get("http://www.baidu.com");
String win = driver.getWindowHandle();
WebElement ele = driver.findElement(By.id("kw"));
ele.sendKeys("百度");
WebElement ele1 = driver.findElement(By.id("su"));
ele1.click();
//新頁面,但是沒有開新窗口的,可以直接繼續操作
WebElement ele2 = driver.findElement(By.className("favurl"));
ele2.click();
//如果打開了新窗口,那麼要操作新窗口的話,就必須先跳轉到新窗口,再繼續操作
Set<String> win1 = driver.getWindowHandles();
for(String str : win1)
{
if(!str.equals(win))
{
driver.switchTo().window(str);
}
}
WebElement ele3 = driver.findElement(By.id("kw"));
ele3.sendKeys("看看跳轉到哪裏去了");
}
@Test
public void frameSwitchT() {
driver.get("http://layer.layui.com/");
WebElement ele3 = driver.findElement(By.id("parentIframe"));
ele3.click();
//frame跳轉
WebElement ele4 = driver.findElement(By.id("layui-layer-iframe1"));
driver.switchTo().frame(ele4);
WebElement ele5 = driver.findElement(By.id("new"));
ele5.click();
driver.switchTo().defaultContent();
}</span>