有没有方法可以在Selenium中识别以下内容?
Number of iframes in a page
Attributes/Details of the current iframe
答案 0 :(得分:5)
driver.findElements(By.xpath("//iframe")).size();
要获取当前帧的详细信息,我建议您使用WebElement
对象和switchTo
切换到它,然后使用getAttribute
<强> UPD 强>
事实上,是的,首先会在当前上下文中给出iframe的数量。如果您不想以递归方式执行此操作,但需要快速且有效的(脏)解决方案 - 只需获取页面源并查找"<iframe"
字符串
答案 1 :(得分:2)
以下是一个如何处理它的示例:
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());
}
答案 2 :(得分:2)
正如其他答案所述,您可以使用以下方式识别当前关注环境中的帧数:
driver.findElements(By.xpath("//iframe")).size();
但是,这不会识别任何帧是另一帧的子帧。为此,您需要先切换到该父帧。
要检索当前焦点框架的名称或ID等属性,您可以像这样使用JavascriptExecutor:
String currentFrameName = (String)((JavascriptExecutor) driver).executeScript("return window.frameElement.name");