2011-12-01 113 views
2

我使用Selenium Server来测试基于小部件的网页。所有的小部件都包含在一个iFrame中,每个小部件都包含它自己的iFrame。我试图操作标题中指定的特定小部件中的元素,但Selenium似乎无法识别第二个iFrame之后的任何内容。Selenium在识别嵌套iFrame中的元素时遇到问题

小部件的标题在第一个iFrame中,我需要用它来确定下一个要选择的iFrame。我使用来选择框架的代码看起来是这样的:

selenium.selectFrame("css=div.widgetheader:contains(TITLE)+widgetbody iFrame); 

然而,当我试图内嵌框架内访问的元素,硒是无法找到他们。

有关如何让Selenium识别第二帧内的元素的想法?

回答

0

如果您尝试输入嵌套在另一个iframe中的iframe,则必须执行2个iframe“切换”。 例如:

driver.switchTo().frame(driver.findElement(By.id("frameId1"))); //switching driver to first iframe 
driver.switchTo().frame(driver.findElement(By.id("frameId2"))); //switching driver to second iframe 
//Now, do your stuff. 

要返回初始位置(削减,用途:

driver.switchTo().defaultContent(); 

此外,还有可当我们不能够得到的iframe值的情况下在这种情况下,你可以使用tagName方法。

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0));