我正在使用Selenium Server来测试基于小部件的网页。所有小部件都包含在iFrame中,每个小部件都包含自己的iFrame。我正在尝试操作标题指定的特定小部件中的元素,但Selenium似乎无法识别第二个iFrame之后的任何内容。
小部件的标题位于第一个iFrame中,我需要使用它来确定接下来要选择的iFrame。我用来选择框架的代码如下所示:
selenium.selectFrame("css=div.widgetheader:contains(TITLE)+widgetbody iFrame);
但是,当我尝试访问iFrame中的元素时,Selenium无法找到它们。
关于如何让Selenium识别第二帧中元素的任何想法?
答案 0 :(得分: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));