[Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?
我在测试的过程中遇到一个这样的问题,我无法通过CssSelector找到iFrame下边的html:
<div id="mailEditorDiv" style="display: inline-block;">
<div class="maileditor">
<div style="height:130px;">
<div class="divBody">
<div class="ke-container ke-container-default" style="width: 620px;">
<div class="ke-toolbar" style="display:block;" unselectable="on">
<div class="ke-edit" style="display: block; height: 286px;">
<iframe class="ke-edit-iframe" frameborder="0" hidefocus="true" style="width: 100%; height: 286px;">
<html>
<head>
<body class="ke-content">rrrrrrrt</body>
</html>
后来我发现只能找到iFrame这里,再往后就找不到了。我用过sendKeys to可以将Text发送给body,但是想通过Assert去验证iFrame的text,无法做到。
解决办法:
先将driver切换到iFrame里面去,用来之后再切换回来,此问题就解决了。
public void sendKeysToMailBodyEditBoxAndCheck(String mailBody){
		WebElement el = page.getMailBodyEditBox();
		el.sendKeys(mailBody);
		driver.switchTo().frame(el);
		Assert.assertEquals(driver.findElement(By.xpath("//html/body")).getText(), mailBody,"' "+mailBody+" ' should be displayed in mail body.");
		driver.switchTo().defaultContent();
	}
在本地像上面那样调试通过之后,放到Jenkins上面通过Grid模式运行的时候却报错了,sendkeys没有生效。
改成下面这样,将 switchTo 提前,sendKeys to //html/body才可以。
public void sendKeysToMailBodyEditBoxAndCheck(String mailBody){
		WebElement el = page.getMailBodyEditBox();
		driver.switchTo().frame(el);
		WebElement mailTextEl = driver.findElement(By.xpath("//html/body"));
		mailTextEl.sendKeys(mailBody);
		Assert.assertEquals(mailTextEl.getText(), mailBody,"\""+mailBody+"\" should be displayed in mail body.");
		driver.switchTo().defaultContent();
	}
[Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?的更多相关文章
- selenium之 定位以及切换frame(iframe)
		
Set<String> windows = driver.getWindowHandles(); int count = 0; for(String handl ...
 - App自动化之dom结构和元素定位方式(包含滑动列表定位)
		
900×383 38 KB 先来看几个名词和解释: dom: Document Object Model 文档对象模型 dom应用: 最早应用于html和js的交互.界面的结构化描述, 常见的格式为h ...
 - DOM2级提供的对DOM结构执行深度优先遍历 笔记
		
NodeIterator和TreeWalker这2个类型可以基于给定的起点对DOM结构执行深度优先遍历.(我测试用的浏览器是Chrome,介绍说IE不支持DOM遍历,但是不知道最新的IE支持不支持) ...
 - js实现DOM结构
		
/* 编写一段js脚本生成下面的DOM结构.要求使用标准的DOM方法或属性 <div id='example'> <p class='slogan'>淘,你喜欢</p&g ...
 - lhgdialog: iframe页面里面的,确定,关闭、取消按钮的操作
		
lhgdialog: iframe页面里面的,确定,关闭.取消按钮的操作 如果你正在用lhgdialog,用他人iframe,或者 content:'url:http://www.baidu.com/ ...
 - React虚拟DOM具体实现——利用节点json描述还原dom结构
		
前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其 ...
 - V9发布内容时保留框架<iframe></iframe>
		
有些时候,发布文章内容的时候需要用到<iframe></iframe>框架站外内容最近在发布内容时就遇到这个问题,<iframe></iframe>给转 ...
 - 提高测试脚本复用性降低DOM结构引起路径变化的影响
		
问题描述 在定位元素时直接复制的xpath. 但是因为下面这些原因导致之前引用的路径失效, 不得不频繁修改脚本重新定位元素, 大降低了脚本的复用性, 也增加了维护的成本: 1. UI修改 (比如增加了 ...
 - DOM结构及优化
		
1.DOM树中三种常见的DOM节点: 1>元素节点:上图中<a>,<h1>等都是元素节点,即标签 2>文本节点:向用户展示的内容,如...中的"文档标题& ...
 
随机推荐
- IPv4选项
			
IPv4数据报的首部由固定首部(20字节)和可变部分组成(40字节).选项可用于网络的测试和排错. 1:选项的组成(TLV:type-length-value) 1.1:一个字节的类型字段. 1.1. ...
 - 16. orcle中replace的用法及例子
			
replace 函数用法如下: replace('将要更改的字符串','被替换掉的字符串','替换字符串'); 例子: select replace ('1,2,3',',',';') from d ...
 - leetcode944
			
public class Solution { public int MinDeletionSize(string[] A) { ; ; j < A[].Length; j++) { ; i & ...
 - DevExpress GridView 显示行号
			
Private Sub GridView1_CustomDrawRowIndicator(sender As Object, e As RowIndicatorCustomDrawEventArgs) ...
 - GET和POST的真正区别
			
文章来源: http://www.nowamagic.net/librarys/veda/detail/1919 如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这 ...
 - Hibernate 中的锁( locking )
			
业务逻辑的实现过程中,往往需要保证数据访问的排他性.如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数 ...
 - Winform 无纸化办公-屏幕联动
			
最近做无纸化办公,对接硬件,用了挺多东西总结一下 技术上主要是:asp.net .winform.activeX控件.chrome插件.socket编程,websocket. 其实看着需求挺简单的,在 ...
 - windows本地blast
			
详细可参考https://www.jianshu.com/p/2f125cdf8262:https://blog.csdn.net/qq_34296043/article/details/544277 ...
 - 大型运输行业实战_day07_1_订单查看实现
			
1.业务分析 每个在窗口售票的售票员都应该可以随时查看自己的售票信息 简单的界面入口如图所示: 对应的html代码: <button onclick="orderDetail()&qu ...
 - PR数量回写重复