【java+selenium3】多窗口window切换及句柄handle获取(四)
一 、页面准备
1.html
<html>
<head>
<title>主页面 1</title>
</head>
<body>
<div>
主页面 1 :<input type="text" id="input_1" value=""/><br><br>
<a href="./2.html" target="_blank">点击这里跳转新页面 2 </a><br><br>
<a href="./3.html" target="_blank">点击这里跳转新页面 3 </a><br><br>
</div>
</body>
</html>
2.html
<html>
<head>
<title>新页面 2</title>
</head>
<body>
<div>
新页面 2 :<input type="text" id="input_2"/>
</div>
</body>
</html>
3.html
<html>
<head>
<title>新页面 3</title>
</head>
<body>
<div>
新页面 3 :<input type="text" id="input_3"/>
</div>
</body>
</html>
二、句柄
1.获取当前窗口的句柄(String类型)
String handle = driver.getWindowHandle();
2.获取所有带开窗口的句柄(set<String>)
//获取当前打开窗口的所有句柄
Set<String> handles = driver.getWindowHandles();
三、项目实战
package cn.test; import java.util.ArrayList;
import java.util.Set; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class Test { public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
WebDriver driver =null;
try {
driver = new ChromeDriver();
driver.get("file:///C:/Users/Administrator/Desktop/test/1.html");
driver.manage().window().maximize();
driver.findElement(By.id("input_1")).sendKeys("主页面 1 写入数据");
Thread.sleep(2000);
//获取主页面1句柄
String handle1 = driver.getWindowHandle();
System.out.println("主页面1句柄:"+handle1);
//点击页面2的超链接跳转后,在页面2文本框输入数据
driver.findElement(By.partialLinkText("点击这里跳转新页面 2")).click();
String handle = getLastHandle(driver);
System.out.println("新页面2句柄:"+handle);
//获取到页面2的句柄,将driver作用域切到页面2
driver.switchTo().window(handle);
driver.findElement(By.id("input_2")).sendKeys("新打开页面 2 输入数据"); //返回主页面1点击打开新页面3
//利用页面1的句柄,将driver作用域切回到页面1
driver.switchTo().window(handle1);
//点击页面3的超链接跳转后,在页面3文本框输入数据
driver.findElement(By.partialLinkText("点击这里跳转新页面 3")).click();
handle = getLastHandle(driver);
System.out.println("新页面3句柄:"+handle);
driver.switchTo().window(handle);
driver.findElement(By.id("input_3")).sendKeys("新打开页面 3 输入数据");
Thread.sleep(2000);
//关闭新打开的页面窗口3
driver.close();
Thread.sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}finally {
driver.quit();
}
} /**
* @param driver
* @return 当前打开窗口的最后一个句柄
*/
public static String getLastHandle(WebDriver driver) {
//获取当前打开窗口的所有句柄
Set<String> Allhandles = driver.getWindowHandles();
ArrayList<String> lst = new ArrayList<String>(Allhandles);
return lst.get(lst.size()-1);
}
}
四、学习后总结,不足之处后续补充。。。
【java+selenium3】多窗口window切换及句柄handle获取(四)的更多相关文章
- 【java + selenium3】窗口基本操作及8大定位元素方法总结(一)
一.窗口基本操作 1. 关于窗口的设置都是由window对象提供的: 获取window的对象方法: driver.manage().window(); //1.获取 window 对象 Window ...
- Java+Selenium3方法篇21-webdriver处理浏览器多窗口切换
经过前面两篇文章的铺垫,我们这篇介绍,webdriver如何处理,一个浏览器上多个窗口之间切换的问题.我们先脑补这样一个测试场景,你在页面A点击一个连接,会在新的tab窗口打开页面B,这个时候,你在页 ...
- selenium(java)浏览器多窗口切换处理
要在多个窗口直接切换,首先获取每个窗口的唯一标示符(句柄),通过窗口属性可以获取所有打开窗口的标示符,以集合的形式返回:以下示例: Set<String> winHandels ...
- selenium3+python-多窗口、句柄(handle)
一.获取当前窗口句柄 1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别. 2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换.但是脚本没长眼 ...
- Java+Selenium3自动化测试框架设计系列--href="javascript:void(0)"如何获得元素定位
经过前面两篇文章的铺 垫,我们这篇介绍,webdriver如何处理,一个浏览器上多个窗口之间切换的问题.我们先脑补这样一个测试场景,你在页面A点击一个连接,会在新的 tab窗口打开页面B,这个时候,你 ...
- Python+Selenium练习篇之19-多窗口之间切换
本文来介绍如何处理driver在多窗口之间切换,想一下这样的场景,在页面A点击一个连接,会触发在新Tab或者新窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来的脚本是操作页面B的元 ...
- python selenium中iframe切换、window切换方法
一.selenium中iframe切换方法: 方法一:switch_to.frame frame函数中提供了三种定位方法:by index, name, or webelement. driver.s ...
- Java+Selenium3方法篇24-单选和多选按钮操作
Java+Selenium3方法篇24-单选和多选按钮操作 本篇介绍 webdriver处理前端单选按钮的操作.单选按钮一般叫raido button,就像我们在电子版的单选答题过程一样,单选只能点击 ...
- selenium 操作多个窗口间切换
#coding=gbk ''' selenium多个窗口间切换 ''' from selenium import webdriver as wd from selenium.webdriver imp ...
随机推荐
- 初探DispatcherServlet#doDispatch
初探DispatcherServlet#doDispatch 写在前面 SpringBoot其实就是SpringMVC的简化版本,对于request的处理流程大致是一样的, 都要经过Dispatche ...
- P1013 [NOIP1998 提高组] 进制位
解析 看到这道题时,有没有想到搜索?然后就是一通码......然后过了. 但是,真的要用搜索吗? 我们可以观察一下.对于n进制中的数ii,如果ii加上某一个数jj会变成两位数,那么可以得到如下不等式: ...
- mac php安装扩展 如 seoole apcu
//下载 --安装 --复制扩展文件到对应目录 wget https://pecl.php.net/get/apcu-5.1.7.tgz tar -zvcf pcu-5.1.7.tgz cd 到解压目 ...
- 华为云计算IE面试笔记-Fusionsphere架构及组件介绍(服务器虚拟化解决方案)
eDSK 最上层则是eDSK是我们FusionSphere服务器虚拟化解决方案中的虚拟化北向统一API接口,其他的第三方系统或者是其他运营平台(FC.VMware等)可以通过eDSK轻松完成无缝对 ...
- YbtOJ#763-攻城略池【线段树合并】
正题 题目链接:http://www.ybtoj.com.cn/problem/763 题目大意 给出\(n\)个点的一棵树,每个\(d_i=0\)的点每秒会产生一个士兵往根节点走,走到一个节点让一个 ...
- 深入浅出WPF-05.控件与布局
控件与布局 突出特点:1.专门的UI设计语言XAML,无需像MFC那样使用编程语言设计UI.2.前几代在UI和数据交互方面是由消息Message到控件事件,始终是把UI控件放在主导位置而把数据放在了次 ...
- Matrix Analysis and Application
Chap 1: Linear Equations and Matrix Linear equations Gaussian elimination Pivot; Triangularize; Back ...
- torch的下载及安装
Pytorch官网:https://pytorch.org/ 安装的时候如果选择在官网上下载安装的话下载会很慢,试过梯子也是很慢,此处提供一种快速安装的方法. 1.由于我是window系统,我选择了国 ...
- 10.10 Rewrite 实战
将baidu.com跳转到www.baidu.com server { listen 80; server_name baidu.com; rewrite ^/ http://www.baidu.co ...
- T-SQL——函数——字符串操作函数
目录 0. 加号(+) 1. LEFT和RIGHT 2. SUBSTRING 3. LEN和DATALENGTH 4. CHARINDEX和PATINDEX 5. REPLACE 6. REPLICA ...