51Testing软件测试论坛

标题: Selenium遇到弹出的iframe框,如何才能点击到iframe上的内容? [打印本页]

作者: 回首见云飞    时间: 2012-3-8 13:52
标题: Selenium遇到弹出的iframe框,如何才能点击到iframe上的内容?
页面上点击按钮后,弹出一个框,如何点击到里面的内容?(见图总选中的地方)
这里貌似有两层iframe。
谢谢。

[attach]77901[/attach]
作者: jia8162    时间: 2012-3-8 18:10
先用int i = getXpathCount(xptah iframe)-1 个数
for(int c = 1 ; c<=i;c++)
{
       if(!isTextPresent(iframe 中的文字))
       {
         selectFrame("index=" +c)
        }
        else
        {
             break;
        }
}
作者: 回首见云飞    时间: 2012-3-9 12:08
谢谢楼上的。
昨天我尝试了其他的方法,成功了。
我使用的是 driver.switchTo().frame("availFrame");
作者: jia8162    时间: 2012-3-9 13:21
没什么
我的是RC 的方法
不是driver
我觉得driver不怎么灵活,所以不怎么用它
作者: 回首见云飞    时间: 2012-3-9 15:29
我是用的是webdriver,最终后来,在webdriver中还是用到了1.x的方法
......
this.driver = new InternetExplorerDriver();
this.selenium = new WebDriverBackedSelenium(driver,loginURL);
......
driver.switchTo().frame("xxxxx");
selenium.click("id=xxxxx");
作者: 遇上鱼子    时间: 2012-3-16 16:29
你可以重写selenium机制。使用:getEval 方法
作者: ryugun    时间: 2012-4-3 15:13
个人觉得对于有iframe的页面用webDriver不是很爽啊~频繁的选择frame退出frame真繁琐,还是比较喜欢selenium的方式(当然我是习惯用xpath)。。。
对于5楼所说的webDriver转selenium的方式其实只是采用了河selenium1.0大体相同的一些api接口,方便selenium1.0的用户的使用习惯,到底层依然是通过webDriver的方式进行的。和selenium1.0差别太大。。

对于纯selenium的方式而言,基本可以告别大多数的选择frame
当然你要选frame也可以,只是很繁琐,记住这个原则
有A  B  C 三个frame,另外还有一个最跟层top,在A与C之上,即top包含A与C
A 包含B      A与C平行

到达当前页面默认是在top,此时selenium可以直接很方便的选择ABC任何frame的东西(当然xpath要唯一且正确),例如B内有控件F,你其实可以直接根据F的属性选择(//F[@id='XXXX']等),无需要先selectFrame(B)的操作
当然你要先selectFrame(B)也不会错,但后面你就会有问题了,如果你选择了frameB ,此时如果你需要再继续选择A或C的其他控件的话,那你得先退出frameB,再选择,这不是多此一举么。。。。
如果不选择frameB,就根本不需要这样繁琐的操作,直接操作Bframe的F控件,也可以直接操作A或Cframe的其它控件。。。。

而相对于webDriver......方正我遇到的情况,有frame的页面,类似于上面的例子,就必须这样来回的选frame,退frame,烦死个人啊
,反正目前还没找到解决方法,可能我水平太低,等待高手

这也是我为什么推荐selenium,不建议选frame操作的原因
作者: dian106106    时间: 2012-4-12 22:01
换来换去都是差不多几句话
driver.switchTo().frame("framename");
driver.switchTo().frame("framename.0.child");

selenium.selectFrame("iframe");
selenium.type("//body","123456");
selenium.selectFrame("relative=parent");
selenium.click("//input[@class='发布']");
选择框架时还有其他常用的定位:
relative=parent
relative=top
index=0,index=1,...
作者: dian106106    时间: 2012-4-12 22:04
selectwindow 和selectframe 都差不多




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2