一、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的定位及详解(三)的更多相关文章

  1. 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

    1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...

  2. Java 8系列之Stream的基本语法详解

    本文转至:https://blog.csdn.net/io_field/article/details/54971761 Stream系列: Java 8系列之Stream的基本语法详解 Java 8 ...

  3. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  4. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

  5. div+css定位position详解

    div+css定位position详解 1.div+css中的定位position 最主要的两个属性:属性 absolute(绝对定位) relative(相对定位),有他们才造就了div+css布局 ...

  6. java实现excel的导入导出(poi详解)[转]

    java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava  经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...

  7. Java开源生鲜电商平台-盈利模式详解(源码可下载)

    Java开源生鲜电商平台-盈利模式详解(源码可下载) 该平台提供一个联合买家与卖家的一个平台.(类似淘宝购物,这里指的是食材的购买.) 平台有以下的盈利模式:(类似的平台有美菜网,食材网等) 1. 订 ...

  8. “全栈2019”Java多线程第十九章:死锁详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. Java基础-进程与线程之Thread类详解

    Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...

随机推荐

  1. python刷题第四周

    本周有所收获的题目: 第一题: 第4章-17 水仙花数(20 分) (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身. 例如:153=1×1×1+5×5×5 ...

  2. 如何在Ubuntu 18.04安装Git

    在Ubuntu 18.04安装Git 更新apt包列表 apt-get update -y apt-get upgrade -y 安装Git: apt install git 检查Git版本 git ...

  3. php 常用算法与函数

    1.一群猴子排成一圈,按1,2,-,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去-,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫 ...

  4. 集群环境下的Session管理

    1. 集群环境下的管理HTTPSSession所遇到的问题 一台服务器对应这个一个session对象,无法在另外一个服务器互通 解决方法: 1. Session 的 Replication(复制)将当 ...

  5. python二级 第八套

    第一部分 基本操作 第一题 1. 第二题 1. 字符串的索引  和列表的索引   一样使用 2. 这俩者有什么区别 3. 我的意思想说  切片         里面没有冒号  就是表示取这个索引的 字 ...

  6. Jenkins持续集成与部署

    一.Jenkins简介 在阅读此文章之前,你需要对Linux.Docker.Git有一定的了解和使用,如果还未学习,请阅读我前面发布的相关文章进行学习. 1.概念了解:CI/CD模型 CI全名Cont ...

  7. Vue2.0 基础入门

    前言:" 今生遇汝,何其幸哉:于我蒙昧之时遇到你,于我大雾初透之时爱上你,于我大智初醒之时沉沦你. " 官网: 介绍 - Vue.js (vuejs.org) 指令与修饰符 创建实 ...

  8. jQuery实现购物车功能

    1.HTML代码(品优购模版) <!DOCTYPE html> <html lang="zh-CN"> <head> <meta char ...

  9. JAVA 150道笔试题知识点整理

    JAVA 笔试题 整理了几天才整理的题目,都是在笔试或者面试碰到的,好好理解消化下,对你会有帮助,祝你找工作顺利,收到满意的 offer . 1.Java 基础知识 1.1 Java SE 语法 &a ...

  10. mysql面试题及答案,mysql最新面试题,mysql面试题大全汇总

    mysql最新面试题及答案汇总 Mysql 的存储引擎,myisam和innodb的区别.mysql最新面试题 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁, ...