[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>文本节点:向用户展示的内容,如...中的"文档标题& ...
随机推荐
- Pillow 读取图片截断错误
做图像处理的时候,Pillow是经常使用到的模块. 最近在读取图片的时候出现了一个错误. OSError: image file is truncated (461 bytes not process ...
- UVA540-队列
题意: 每一个数字有自己所属的团队,如果所属的团队已经有人在队列里,放在团队的最后一个,要不然放队列里最后一个 注意:一个团队里的最多1000个元素,但是入队,出队的操作会达到200000次 解法:循 ...
- 【独家】完美解决appium安装app时,需要手动确认安装的问题
appium初始化driver时,如果未安装该app会先进行安装,安装时,很多安卓手机都会弹框,需要手动确认安装. 如小米的机器, 这是个头疼的问题,之前在网上找遍了,只有通过adb去点相对坐标成功了 ...
- leetcode415
public class Solution { public string AddStrings(string num1, string num2) { //判断num1和num2的长度,进行对齐 i ...
- Delphi Berlin 窗体代码分离风格 回到Delphi7传统风格
回到Delphi7传统风格 Floating Form Designer You can now detach the form designer in both, VCL and FireMonke ...
- myeclipse配置gradle插件
首先,到Gradle官网下载最新版的gradle,已经到了2.13了 下载地址是 http://gradle.org/gradle-download/ 下载下来解压到任意目录 然后配置Windows环 ...
- 定时器setInterval, innerText获取文本, charAt()获取单个字符串, substring(1, content.length)获取范围内的字符串, 实现字符串的滚动效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 列表(ul ol dl)
Title 1 2 3 1 2 3 a 1 2 b 1 2 <!DOCTYPE html> <html lang="en"> <head> &l ...
- MVC控制器详解
原文地址:http://www.cnblogs.com/SeeYouBug/p/6441934.html#3628606 目录 一.理解控制器 1.1.什么是控制器 1.2.控制器的作用 1.3.创建 ...
- Mybatis知识(5)
1. #{} 与${}的区别 #{}解释为 JDBC prepared statement 的一个参数标记,而${}解释为字符串替换.比如:我们不能在表名的位置使用参数标记,也不能在列名的位置使用参数 ...