如何使用Java代码识别Selenium中有iframe的页面?

如何使用Java代码识别Selenium中有iframe的页面?,java,selenium,Java,Selenium,我是硒的新手。这些网页,我必须自动化,有些网页有iFrame,其余的没有。如何识别是否存在iframe,以便只针对java中的特定页面,而不针对firebug。如果页面具有iframe,请使用 webdriver.switchTo().defaultContent()else直接检查xpath在浏览器中打开页面,使用Firebug、开发工具等查看页面的HTML代码。如果HTML有标记iframe,这意味着您的页面有iframe,因此您必须使用driver.switchTo.frame(frame

我是硒的新手。这些网页,我必须自动化,有些网页有iFrame,其余的没有。如何识别是否存在iframe,以便只针对java中的特定页面,而不针对firebug。如果页面具有iframe,请使用
webdriver.switchTo().defaultContent()
else直接检查xpath

在浏览器中打开页面,使用Firebug、开发工具等查看页面的HTML代码。如果HTML有标记
iframe
,这意味着您的页面有iframe,因此您必须使用
driver.switchTo.frame(frame)与框架内的元素交互

如果要使用Java代码进行检查,请执行以下操作:

driver.getPageSource().contains("iframe"); //this will return true if there is iframe

您可以使用
By.tagName
方法查找
iFrame

int count = driver.findElements(By.tagName("iframe")).size() ;
if(count == 0){
   // No frames          
}else{
   // Frames present         
}
尝试在第页上查找iframe:

List iframes=webDriver.findElements(按.tagName(“iframe”));
将所有找到的iFrame作为WebElement的列表

如果iframes.size()>0,则表示在第页上找到了iframes。反之亦然


因此,如果发现iFrame,您可以像使用webelements一样使用它们。在示例中,您可以切换到列表中的任何iframe,在列表中执行某些操作并返回。

否,我必须将其设置为通用。如何检查加载的页面,它是否具有来自java代码的iframe。更新了答案,请检查。我们可以从xpath的java代码中检查该元素是否存在于iFrame中吗?只有在切换到该iFrame后,您才能检查该元素是否存在于iFrame中。好的。在一个页面中,元素下方有iFrame,我必须将其自动化。getPageSource()包含(“iframe”);这是真的,因为页面有那个iframe。但那个元素并没有出现在iframe中。我的帖子可以被认为是讨论,但无论如何。我相信您不需要做这样的工作来搜索帧并切换到。如果有两个iframe或frame-in-frame呢?哪一帧将成为目标?我认为,如果您使用页面对象模式并拥有描述所需web元素的类,那么您将摆脱许多问题。特别是通过创建这样的通用方法来检查iframe是否存在于页面源中,并有条件地切换框架。code.google.com/p/selenium/wiki/PageObjects——这需要一些努力才能开始,但利大于弊。
List<WebElement> iframes = webDriver.findElements(By.tagName("iframe"));