【java+selenium3】特殊元素iframe的定位及详解(三)
一、iframe 内联框架
1.自己写个网页,仅供理解iframe演示使用,如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>iframeA</title>
<style type="text/css">
div {
border:2px solid red;
width: 800px;
height: 350px;
}
#iframe_a {
border:2px solid red;
width: 500px;
height: 300px;
} </style>
</head>
<body>
<div>
<br>iframeA:
<input id='input_a' type='text'>
<iframe id='iframe_a' name='iframe_a_name' class='iframe_cls' src="./iframeB.html"></iframe>
<br>
</div><br>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>iframeB</title>
<style type="text/css">
div {
width: 400px;
height: 200px;
}
#iframe_b { width: 300px;
height: 100px;
}
</style>
</head>
<body>
<div>
<br>
iframeB:
<input id='input_b' type='text'>
<iframe id='iframe_b' name='iframe_b_name' src="./iframeC.html"></iframe>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>iframeC</title>
</head>
<body>
<div>
<br>iframeC:
<input id='input_c' type='text'>
</div>
</body>
</html>
展示如下:

2.依次写入iframeA输入框,iframeB输入框,iframeC输入框代码实现
driver.navigate().to("file:///D:/xxx/test_html/iframeA.html");
driver.findElement(By.id("input_a")).sendKeys("iframe_A");
//切换iframe;将驱动对象的作用域切换至b页面
driver.switchTo().frame("iframe_a");//传入iframe_id进行切换
driver.findElement(By.id("input_b")).sendKeys("iframe_B");
WebElement element = driver.findElement(By.id("iframe_b"));
//切换iframe
driver.switchTo().frame(element);//传入iframe元素进行切换
driver.findElement(By.id("input_c")).sendKeys("iframe_C");

注意:iframe只能是按照顺序层级切换,不能从iframe_A直接切换至iframe_C
3.当你写入iframe_C的时候,返回iframe_B修改写入文本值,再返回iframe_A修改输入的文本值,代码实现;
//切换父节点:parentiframe
driver.switchTo().parentFrame();
driver.findElement(By.id("input_b")).clear();
driver.findElement(By.id("input_b")).sendKeys("C返回父节点B,修改iframe_B");
driver.switchTo().parentFrame();
driver.findElement(By.id("input_a")).clear();
driver.findElement(By.id("input_a")).sendKeys("B返回父节点A,修改iframe_A");

4.直接返回切换到顶级的父节点iframe例如:C输入后,直接切换到A文本框输入:
/**
WebDriver org.openqa.selenium.WebDriver.TargetLocator.defaultContent() Selects either the first frame on the page, or the main document when a page contains iframes.
Returns:This driver focused on the top window/first frame.
**/
driver.switchTo().defaultContent();
//直接返回切换到顶级的父节点iframe例如:C输入后,直接切换到A文本框输入:
driver.switchTo().defaultContent();
driver.findElement(By.id("input_a")).clear();
driver.findElement(By.id("input_a")).sendKeys("C直接切顶级A,再次修改iframe_A");

5.学习后总结,不足之处后续补充修正!
【java+selenium3】特殊元素iframe的定位及详解(三)的更多相关文章
- 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...
- Java 8系列之Stream的基本语法详解
本文转至:https://blog.csdn.net/io_field/article/details/54971761 Stream系列: Java 8系列之Stream的基本语法详解 Java 8 ...
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- JAVA 注解的几大作用及使用方法详解
JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...
- div+css定位position详解
div+css定位position详解 1.div+css中的定位position 最主要的两个属性:属性 absolute(绝对定位) relative(相对定位),有他们才造就了div+css布局 ...
- java实现excel的导入导出(poi详解)[转]
java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava 经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...
- Java开源生鲜电商平台-盈利模式详解(源码可下载)
Java开源生鲜电商平台-盈利模式详解(源码可下载) 该平台提供一个联合买家与卖家的一个平台.(类似淘宝购物,这里指的是食材的购买.) 平台有以下的盈利模式:(类似的平台有美菜网,食材网等) 1. 订 ...
- “全栈2019”Java多线程第十九章:死锁详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- Java基础-进程与线程之Thread类详解
Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...
随机推荐
- web、app、小程序测试异同点
http://www.spasvo.com/Company/news_show.asp?id=702 https://blog.csdn.net/weixin_43489515/article/det ...
- [转载]提升SQLite数据插入效率低、速度慢的方法
转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...
- Windows10 IIS Web服务器安装配置
前言: 对于.NET开发者而已,IIS Web托管服务器应该是十分的熟悉的.对于刚安装Windows10的系统的用户而已Internet Information Services(IIS)功能是默认关 ...
- 【vue】生成接口模拟数据
目录 方案一:自定义模拟数据 Step1 创建json文件 Step2 在 vue.config.js 中配置 Step3 在组件中使用 (方式一) Step3 封装api (方式二) Step4 在 ...
- Ueditor Version 1.4.3.3 SSRF
点以前挖的洞.Ueditor是支持获取远程图片,较为经典的进行限制url请求,但是可以通过DNS重绑定绕过其验证. 代码分析 一般请求的url如下,其中source为数组,值为图片地址: /edito ...
- mysql从零开始之MySQL 删除数据库
MySQL 删除数据库 使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限. 在删除数据库过 ...
- L1-023 输出GPLT (20 分) java题解 GPLT天梯赛防坑技巧
上题目先 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符(不区分大小写)的个数不一定是一样多的 ...
- PAT (Basic Level) Practice (中文)1086 就不告诉你 (15分)
1086 就不告诉你 (15分) 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三."本题就要求你,对任何一对给定的 ...
- C 编译预处理和宏
前置知识 0x00 cmd编译运行程序 https://blog.csdn.net/WWIandMC/article/details/106265734 0x01 --save-temps gcc m ...
- NXOpen.UF.UFView.CycleObjects 的使用
Public Sub CycleObjects(ByVal view As NXOpen.Tag, ByVal type As NXOpen.UF.UFView.CycleObjectsEnum, B ...