【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 ...
随机推荐
- Shell系列(39) - dirname
dirname作用 dirname实际工作中常常是跟$0一起使用 用于获取当前运行脚本的绝对路径 这个命令要放在shell脚本中使用,在命令行使用意义不大 [yutao@master01 ~]$ di ...
- jmeter压测学习12-设置持续压测时间(调度器的使用)
前言 使用jmeter 做压测的时候,希望对一个接口持续压测 10 分钟或者半小时,可以使用调度器设置持续压测时间. 设置样本总数 压测方式有2种,一种是设置线程组和循环次数,这样可以设置一个样本总数 ...
- phpQuery
以下资料均来自官方文档,官方文档地址:https://code.google.com/archive/p/phpquery/wikis 基础 示例 phpQuery::newDocumentFileX ...
- px em rem区别
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的 ...
- P3214-[HNOI2011]卡农【dp】
正题 题目链接:https://www.luogu.com.cn/problem/P3214 题目大意 一个由\(1\sim n\)的所有整数构成的集合\(S\),求出它的\(m\)个不同非空子集满足 ...
- Gaussion
# Kernel density estimation import numpy as np import matplotlib.pyplot as plt from scipy.stats impo ...
- 寻找写代码感觉(五)之Mybatis官方代码生成器的使用
一.Mybatis Generator生成器 见名知意,官方给出的代码生成器.好处就是不用自己写实体类.接口.xml文件了,应对简单增删改查是可以的.复杂的还是需要自己手写sql的. 二.Mybati ...
- 解析csv数据绘制曲线图
一个解析csv数据的小工具,所做项目中要查看脉冲图谱,经理就让我这个刚入职的小萌新写了个小程序.同事将csv格式的脉冲数据发给我,我的想法就是,将这些csv里的数据作为纵轴,x++为横轴,绘制出折线图 ...
- 如何迁移 Spring Boot 到函数计算
作者 | 田小单 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上 ...
- 【原创】C语言和C++常见误区(一)
本文仅在博客园发布,认准原文地址:https://www.cnblogs.com/jisuanjizhishizatan/p/15414469.html 问题1:int类型占几个字节? 常见误区:占4 ...