使用Selenium和java识别页面中iFrame的数量?
是否有任何方法可以识别硒中的以下物质使用Selenium和java识别页面中iFrame的数量?,java,selenium,iframe,selenium-webdriver,frame,Java,Selenium,Iframe,Selenium Webdriver,Frame,是否有任何方法可以识别硒中的以下物质 Number of iframes in a page Attributes/Details of the current iframe 为了获取当前帧的详细信息,我建议您使用WebElement对象和switchTo切换到当前帧,然后使用getAttribute UPD 事实上,是的,first将给出当前上下文中iframe的数量。如果您不想递归地执行此操作,但想要一个快速且有效(肮脏)的解决方案,只需获取页面源代码并查找“的所有包含内容,下面是一个示例
Number of iframes in a page
Attributes/Details of the current iframe
为了获取当前帧的详细信息,我建议您使用WebElement
对象和switchTo
切换到当前帧,然后使用getAttribute
UPD
事实上,是的,first将给出当前上下文中iframe的数量。如果您不想递归地执行此操作,但想要一个快速且有效(肮脏)的解决方案,只需获取页面源代码并查找
“的所有包含内容,下面是一个示例,说明如何处理此问题:
WebDriver driver = new FirefoxDriver();
driver.get("http://the-internet.herokuapp.com/iframe");
// find all your iframes
List<WebElement> iframes = driver.findElements(By.xpath("//iframe"));
// print your number of frames
System.out.println(iframes.size());
// you can reach each frame on your site
for (WebElement iframe : iframes) {
// switch to every frame
driver.switchTo().frame(iframe);
// now within the frame you can navigate like you are used to
System.out.println(driver.findElement(By.id("tinymce")).getText());
}
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://the-internet.herokuapp.com/iframe");
//找到你所有的Iframe
List-iframes=driver.findelelements(By.xpath(“//iframe”);
//打印您的帧数
System.out.println(iframes.size());
//您可以访问站点上的每一帧
for(WebElement iframe:iframes){
//切换到每帧
驱动程序.切换到().帧(iframe);
//现在,在框架内,您可以像习惯一样导航
System.out.println(driver.findElement(By.id(“tinymce”)).getText();
}
正如其他答案所述,您可以使用以下方法确定当前重点上下文中的帧数:
driver.findElements(By.xpath("//iframe")).size();
但是,这不会识别任何属于另一帧的子帧。为此,您需要先切换到该父帧
要检索当前聚焦帧的名称或id等属性,可以使用JavascriptExecutor,如下所示:
String currentFrameName = (String)((JavascriptExecutor) driver).executeScript("return window.frameElement.name");
这是我认为最好的答案。当我使用上面的代码时,我收到了以下错误:“无法读取null的属性‘name’”这里缺少什么吗?当您尝试执行“return window.frameElement.name”?“window.frameElement”时,您是否处于页面的顶层上下文“如果您关注页面的顶级内容,将返回null。谢谢大家!与size()方法一起,使用switchTo()方法导航到帧。起初,我很难用java代码识别当前帧(我想知道是否有)。通过chrome中Inspect元素的帮助,识别了框架名称,现在我能够识别该框架中的元素。
String currentFrameName = (String)((JavascriptExecutor) driver).executeScript("return window.frameElement.name");