Selenium常用API的使用java语言之14-多窗口切换
2024-08-27 01:18:45
在页面操作过程中有时候点击某个链接会弹出新的窗口, 这时就需要主机切换到新打开的窗口上进行操作。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()类似,前者用于不同窗口的切换, 后者用于不同表单之间的切换。
最新文章
- Ubuntu安装Svn,提供http访问
- js中的call和apply
- 深入理解javascript函数系列第二篇——函数参数
- 统计哪些程序占用了swap
- 过滤DataTable中的空数据
- Linux内核中关于内存的数据结构
- python 使用__slots__
- javascript——touch事件
- Lua中实现队列(高效方式)
- ios 基于CAEmitterLayer的雪花,烟花,火焰,爱心等效果demo
- Apache中RewriteCond规则参数介绍(转)
- 【转】android 欢迎界面翻页成效,仿微信第一次登陆介绍翻页界面
- maven创建spring项目之后,启动报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoade
- Flask 学习 六 大型程序结构
- luogu P3576 [POI2014]MRO-Ant colony
- android圆角功能,非常好用,可以用在图片,视频,gif等上面
- 微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many
- oracle死锁测试
- 01_Flume基本架构及原理
- nginx.conf_2017-11-24
热门文章
- .net core中关于System.Text.Json的使用
- GSVA的使用
- qt model--view-delegate模式的界面设计概念,ListView用法
- 使用speedtest-cli测量服务器带宽
- 创建一个用目录分层的Rust应用
- java绘图(基于Graphics2D)
- nginx tar包安装 包含openssl,rewrite,stream,sticky 等模块
- 【LEETCODE】36、121题,Best Time to Buy and Sell Stock
- springboot2.x配置druid sql监控
- hibernate注解(自动建表如何有表DDL注释) -- Comment用法