Selenium遇到弹出的iframe框,如何才能点击到iframe上的内容?
页面上点击按钮后,弹出一个框,如何点击到里面的内容?(见图总选中的地方)这里貌似有两层iframe。
谢谢。
先用int i = getXpathCount(xptah iframe)-1 个数
for(int c = 1 ; c<=i;c++)
{
if(!isTextPresent(iframe 中的文字))
{
selectFrame("index=" +c)
}
else
{
break;
}
} 谢谢楼上的。
昨天我尝试了其他的方法,成功了。
我使用的是 driver.switchTo().frame("availFrame"); 没什么
我的是RC 的方法
不是driver
我觉得driver不怎么灵活,所以不怎么用它 我是用的是webdriver,最终后来,在webdriver中还是用到了1.x的方法
......
this.driver = new InternetExplorerDriver();
this.selenium = new WebDriverBackedSelenium(driver,loginURL);
......
driver.switchTo().frame("xxxxx");
selenium.click("id=xxxxx"); 你可以重写selenium机制。使用:getEval 方法 个人觉得对于有iframe的页面用webDriver不是很爽啊~频繁的选择frame退出frame真繁琐,还是比较喜欢selenium的方式(当然我是习惯用xpath)。。。
对于5楼所说的webDriver转selenium的方式其实只是采用了河selenium1.0大体相同的一些api接口,方便selenium1.0的用户的使用习惯,到底层依然是通过webDriver的方式进行的。和selenium1.0差别太大。。
对于纯selenium的方式而言,基本可以告别大多数的选择frame
当然你要选frame也可以,只是很繁琐,记住这个原则
有ABC 三个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操作的原因 换来换去都是差不多几句话
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,... selectwindow 和selectframe 都差不多
页:
[1]