使用Selenium和java识别页面中的iframe数量?

时间:2015-07-21 07:12:38

标签: java selenium iframe selenium-webdriver frame

有没有方法可以在Selenium中识别以下内容?

Number of iframes in a page
Attributes/Details of the current iframe

3 个答案:

答案 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");