Java Selenium实现多窗口切换的示例代码
在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用,这样要去操作新窗口中的元素,就需要主机切换到新窗口进行操作。WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换。
- 获取当前窗口浏览器句柄:driver.getWindowHandle();
- 获取所有窗口的浏览器句柄到当前会话:driver.getWindowHandles();
- 用于不同窗口的切换:switchTo().window();
在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换。
以百度首页和百度注册页为例,在两个窗口之间的切换如下图。
实现窗口切换的代码如下:
importjava.util.Set;
importorg.openqa.selenium.By;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.chrome.ChromeDriver;
publicclassMoreWindows{
publicstaticvoidmain(String[]arge)throwsInterruptedException{
WebDriverdriver=newChromeDriver();
driver.get("https://www.baidu.com");
//获得当前窗口句柄
Stringsearch_handle=driver.getWindowHandle();
//打开百度注册窗口
driver.findElement(By.linkText("登录")).click();
Thread.sleep(3000);
driver.findElement(By.linkText("立即注册")).click();
//获得所有窗口句柄
Sethandles=driver.getWindowHandles();
//判断是否为注册窗口,并操作注册窗口上的元素
for(Stringhandle:handles){
if(handle.equals(search_handle)==false){
//切换到注册页面
driver.switchTo().window(handle);
System.out.println("nowregisterwindow!");
Thread.sleep(2000);
driver.findElement(By.name("userName")).clear();
driver.findElement(By.name("userName")).sendKeys("username");
driver.findElement(By.name("phone")).clear();
driver.findElement(By.name("phone")).sendKeys("phonenumber");
//......
Thread.sleep(2000);
//关闭当前窗口
driver.close();
}
}
Thread.sleep(2000);
driver.quit();
}
}
在本例中所涉及的新方法如下:
- getWindowHandle():获得当前窗口句柄。
- getWindowHandles():返回的所有窗口的句柄到当前会话。
- switchTo().window():用于切换到相应的窗口,与上一节的switchTo().frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。
到此这篇关于JavaSelenium实现多窗口切换的示例代码的文章就介绍到这了,更多相关JavaSelenium多窗口切换内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。