软件编程
位置:首页>> 软件编程>> java编程>> Java Selenium实现多窗口切换的示例代码

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

作者:虫师  发布时间:2022-01-22 22:48:08 

标签: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://www.baidu.com");

//获得当前窗口句柄
 String search_handle = driver.getWindowHandle();

//打开百度注册窗口
 driver.findElement(By.linkText("登录")).click();
 Thread.sleep(3000);
 driver.findElement(By.linkText("立即注册")).click();

//获得所有窗口句柄
 Set<String> handles = driver.getWindowHandles();

//判断是否为注册窗口, 并操作注册窗口上的元素
 for(String handle : handles){
  if (handle.equals(search_handle)==false){
   //切换到注册页面
   driver.switchTo().window(handle);
   System.out.println("now 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(): 用于切换到相应的窗口,与上一节的switchTo().frame()类似,前者用于不同窗口的切换, 后者用于不同表单之间的切换。

来源:http://www.testclass.net/selenium_java/more-windows

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com