您的位置:首页 > 其它

五、页面中多级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秒这个是强制线程休息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: