五、页面中多级frame/iframe的一种处理策略(此问题让我头痛很久,一个字,累啊)
2013-04-05 11:35
411 查看
但是悲剧的是frame的切换必须且只能从html的最外层(也就是整个页面最外面的Document对象处)开始一层一层的往目标的frame里切换。如果你的frame存在五级的层次关系,那么浏览器只允许你从root->frame1->frame2->frame3->frame4->frame5,这样你才能进入到你的目标frame中进行DOM操作。然后自动化测试就开始悲剧的一次次的跳进frame中,跳出frame来,每次要定位一个html元素之前都是跳进跳出的~~!(http://www.jenkins.asia/?p=188)
登录系统后,会默认出现此页面,从HTML代码中可以看到,此页面由iframe构成,下面包含2个frame(topFrame、bottomFrame),如果需要定位”企业普查-报警点”元素的话,需要重新的定位frame,定位后,才能进行操作,从最外面一层的iframe-frame(从外向里进行定位),如果确认自己的代码以及路径没有任何问题,对于短时间没有定位出元素,需要在前面加上”driver.manage().timeouts().implicitlyWait(5,
TimeUnit.SECONDS)”在指定时间内查找元素
具体的操作代码如下:
页面没有加载出来就需要点击页面上的元素
这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait
和util来实现
例如:
a).用WebDriverWait和until实现显示等待等待欢迎页的图片出现再进行其他操作
WebDriverWait wait = (newWebDriverWait(driver,10));
wait.until(newExpectedCondition<Boolean>(){
public Booleanapply(WebDriver driver){
boolean loadcomplete = driver.switchTo().frame("right_frame").findElement(By.xpath("//center/div[@class='welco']/img")).isDisplayed();
returnloadcomplete;
}
});
b).也可以自己预估时间通过Thread.sleep(5000);//等待5秒这个是强制线程休息
登录系统后,会默认出现此页面,从HTML代码中可以看到,此页面由iframe构成,下面包含2个frame(topFrame、bottomFrame),如果需要定位”企业普查-报警点”元素的话,需要重新的定位frame,定位后,才能进行操作,从最外面一层的iframe-frame(从外向里进行定位),如果确认自己的代码以及路径没有任何问题,对于短时间没有定位出元素,需要在前面加上”driver.manage().timeouts().implicitlyWait(5,
TimeUnit.SECONDS)”在指定时间内查找元素
具体的操作代码如下:
页面没有加载出来就需要点击页面上的元素
这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait
和util来实现
例如:
a).用WebDriverWait和until实现显示等待等待欢迎页的图片出现再进行其他操作
WebDriverWait wait = (newWebDriverWait(driver,10));
wait.until(newExpectedCondition<Boolean>(){
public Booleanapply(WebDriver driver){
boolean loadcomplete = driver.switchTo().frame("right_frame").findElement(By.xpath("//center/div[@class='welco']/img")).isDisplayed();
returnloadcomplete;
}
});
b).也可以自己预估时间通过Thread.sleep(5000);//等待5秒这个是强制线程休息
相关文章推荐
- 通过 Spring Security配置 解决X-Frame-Options deny 造成的页面空白 iframe调用问题
- frameset、iframe框架登录跳转, 处理session为空的登录页面问题
- html 高手解决 <Iframe></frame>间的退回上一页面问题
- 约瑟夫问题的一种O(n)数学处理方法
- 分享一种系统事故&问题处理反馈方式(COE)
- 关于uchome页面不能被iframe调用的问题,已解决!
- <iframe>引用页面传值获取不到的问题
- 对页面缓存问题的处理方案
- 使用iframe框架后的页面跳转时目标页面变为iframe的子页面的问题
- 处理用easyUI编写事务页面出现日期数据出现【object Object】的形式的问题
- Android RadioGroup中的RadioButton无法选中问题的一种处理方式
- 处理Oracle XE无法打开主页面的问题
- [Flex] IFrame系列 —— IFrame嵌入html点击其他组件后页面消失的问题
- iframe使用location跳转页面的问题
- safari,opera嵌入iframe页面cookie读取问题解决方法
- 解决Selenium2Library中的select frame无法选择没有名字,没有id的frame或者iframe的问题
- Android WebView页面结束后视频播放还有声音问题处理
- iframe和response.sendRedirect()跳转到父页面的问题----已解决
- 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题