Java Selenium实现多窗口切换的示例代码

网友投稿 771 2022-11-24


Java Selenium实现多窗口切换的示例代码

在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,就需要主机切换到新窗口进行操作。WebDriver 提供了switchTo().window()方法可以实现在不同的窗口之间切换。

获取当前窗口浏览器句柄:driver.getWindowHandle();

获取所有窗口的浏览器句柄到当前会话:driver.getWindowHandles();

用于不同窗口的切换:switchTo().window();

在页面操作过程中有时候点击某个链接会弹出新的窗口, 这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换。

以百度首页和百度注册页为例,在两个窗口之间的切换如下图。

实现窗口切换的代码如下:

import java.util.Set;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

public class MoreWindows {

public static void main(String[] arge) throws InterruptedException{

WebDriver driver = new ChromeDriver();

driver.get("https://baidu.com");

//获得当前窗口句柄

String search_handle = driver.getWindowHandle();

//打开百度注册窗口

driver.findElement(By.linkText("登录")).click();

Thread.sleep(3000);

driver.fihttp://ndElement(By.linkText("立即注册")).click();

//获得所有窗口句柄

Set handles = driver.getWindowHandles();

//判断是否为注册窗口, 并操作注册窗口上的元素

for(String handle : handles){

if (handle.equals(search_handle)==false){

//切换到注册页面

driver.switchTo().window(handle);

System.out.println("nowDmsgaxL register window!");

Thread.sleep(2000);

driver.findElement(By.name("userName")).clear();

driver.findElement(By.name("userName")).sendKeys("user name");

driver.findElement(By.name("phone")).clear();

driver.findElement(By.name("phone")).sendKeys("phone number");

//......

Thread.sleep(2000);

//关闭当前窗口

driver.close();

}

}

Thread.sleep(2000);

driver.quit();

}

}

在本例中所涉及的新方法如下:

getWindowHandle(): 获得当前窗口句柄。

getWindowHandles(): 返回的所有窗口的句柄到当前会话。

switchTo().window(): 用于切换到相应的窗口,与上一节的swihttp://tchTo().frame()类似,前者用于不同窗口的切换, 后者用于不同表单之间的切换。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring教程之refresh()执行逻辑浅析
下一篇:使用注解开发SpringMVC详细配置教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~