[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();
	}

[Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?

时间: 2024-10-10 00:29:21

[Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?的相关文章

selenium之 定位以及切换frame(iframe)

frameset不用切,frame需层层切! 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼(原因之一,改天专门说说定位不到元素,可能的一些原因及处理办法). frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有一组方法对frame

React虚拟DOM具体实现——利用节点json描述还原dom结构

前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其中的虚拟DOM,其实,就是利用json数据来代替DOM结构表示,然后利用这个json数据,渲染出DOM树,总体添加到页面中.下面,我就通过介绍我如何实现上面实际问题的思路,一边完成实际需求,一边实现React中虚拟DOM渲染成DOM的原理. 模拟数据结构如下: 1 var allJson = [{

jQuery EasyUI Datagrid组件的完整的基础DOM结构

该日志由 世纪之光 于2年前发表在datagrid分类下 转载: jQuery EasyUI Datagrid组件的完整的基础DOM结构 | WebUI框架使用参考+ http://www.easyui.info/archives/1157.html 关键字: datagrid源码分析, datagrid结构, easyui源码分析 标题可能有点长,什么叫“完整的基础DOM结构”,这里“基础”的意思是指这个结构不依赖具体数据,不依赖Datagrid的view属性,只要存在Datagrid实例就会

V9发布内容时保留框架&lt;iframe&gt;&lt;/iframe&gt;

有些时候,发布文章内容的时候需要用到<iframe></iframe>框架站外内容最近在发布内容时就遇到这个问题,<iframe></iframe>给转义了,保存后变成了&gt iframe,前台显示也是这样,估计是官方为了防止安全,把script.iframe.frame都给转义了稍微修改一下,即可保留<iframe></iframe> 找到\phpcms\libs\functions\global.func.php文件,大

whistle——真机移动端页面调试【查看、修改真机端的页面DOM结构及样式】

1.查看.修改真机端的页面DOM结构及样式[参考——https://imweb.io/topic/5981a34bf8b6c96352a59401]: 1.0.需要配置的rule——域名 weinre://随便某个分类命名[如:wq.jd.com weinre://test2——test2只是作为weinre的分类,防止一个weinre调试页面出现太多的连接]: 1.1.真机上访问某个页面,如访问微信下的发现>购物页面: 1.2.点击weinre下的,刚创建的分类test2,跳到http://1

怎样确保页面中的js代码一定是在DOM结构生成之后再调用

有这样一类问题, 如下所示, 就是在dom结构没有生成时就在js代码中调用了, 此时就会报错: <head> <script> console.log(document.body.nodeName); </script> </head> <body> </body> 上图所示的代码表明, 如果js代码在页面DOM没有解析出来时, document无法获取body元素, 这样就会造成报错. 解决方法有下面两种: 1. 将操作dom的代码

vue.js 2.x 版本script里面的dom被过滤,从而获取不到dom字符串的解决方案

做项目中 vue.js 在1.x版本切换的到2.x版本的时候遇到了一个问题就是说,1.x版本实例化之后 script 里面的dom 字符串不会被过滤掉,但是2.x版本之后就会被过滤例如: 1.x 版本被实例化之后的script 内容 2.x 版本被实例化之后的script 内容 这样我们在获取 id="sh" 内容的时候就无法获取到dom结构,很多时候我们想使用这些dom结构,怎么办呢? 于是乎,经过测试及文档的查看,考虑到了,那么如果还没被完全实例化之后,我们就去获取它,这样我们就能

【Selenium2】【selenium之 定位以及切换frame(iframe)】

参考:http://blog.csdn.net/huilan_same/article/details/52200586 总有人看不明白,以防万一,先在开头大写加粗说明一下: frameset不用切,frame需层层切! 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼(原因之一,改天专门说说定位不到元素,可能的一些原因及处理办法). frame标签有frameset.frame.if

如何拿到iframe标签里面的src的内容,并且重新进行渲染

<iframe width="100%" height="100%" seamless frameBorder="0" scrolling="no" :src='getSrc(item.frameLink)' > </iframe> 因为后台的直接返回的是iframe标签,不好去控制宽高 getSrc(item) { var srcReg = /src=[\'\"]?([^\'\"]