【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类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...
随机推荐
- Shell系列(23)- 字符截取命令sed
简述 字符替换命令sed 和vi功能相似,但是vi是给用户用的,sed是给脚本用的 sed是一种几乎包括在所有的UNIX平台(包括Linux)的轻量级流编辑器.s sed主要是用来将数据进行选取.替换 ...
- (数据科学学习手札128)在matplotlib中添加富文本的最佳方式
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 长久以来,在使用matplotlib进行绘 ...
- 深入HTML5第一天
页面的title一般是30-40个字符:分别为主页,详情页,列表页 keywords:100个字符 description: em是:emphasize: 强调,着重 i:italic斜体的 : ...
- python 深度学习 库文件安装出错汇总
Cython_bbox FairMOT | win10下cython-bbox安装的心酸之路_是阳阳呀的博客-CSDN博客 swig 安装polyiou.py https://blog.csdn.ne ...
- 用SpringBoot实现策略模式
问题的提出 阅读别人代码的时候最讨厌遇到的就是大段大段的if-else分支语句,一般来说读到下面的时候就忘了上面在判断什么了.很多资料上都会讲到使用策略模式来改进这种代码逻辑. 策略模式的类图如下: ...
- 每日总结:Java课堂测试第三阶段第二次优化 (四则运算) (2021.9.22)
package jisuan2; import java.util.*;import java.util.Scanner; public class xiaoxue { public static v ...
- SPOJ2939 QTREE5(LCT维护子树信息)
QWQ嘤嘤嘤 此题正规题解应该是边分治??或者是树剖(总之不是LCT) 但是我这里还是把它当成一个LCT题目来做 首先,这个题的重点还是在update上 因为有\(makeroot\)这个操作的存在, ...
- js 面向对象 动态添加标签
有点逻辑 上代码 thml布局 点击查看代码 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- NX Open,怎样取到面的环LOOP
在封装的ufun .NET库里面,对UF_MODL_ask_face_loops这个函数并没有封装,导致我们很多不便,那我们在.NET下怎样才能使用这个函数呢??当然是手动处理一下 Public Fu ...
- Linux Manual
man 命令用来访问存储在Linux系统上的手册页面.在想要查找的工具的名称前面输入man命 令,就可以找到那个工具相应的手册条目. 手册页不是唯一的参考资料.还有另一种叫作 info 页面的信息.可 ...