但是悲剧的是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秒这个是强制线程休息