无法在Selenium WebDriver中使用iFrame

时间:2014-08-07 09:01:17

标签: java iframe selenium-webdriver webdriver

我在我的应用程序中使用MathML编辑器使用下面的代码我可以在编辑器中输入文本,它可以在编辑器中打印但在编辑器外面有“确定”按钮所以它的显示错误无法找到元素,我想要点击Ok Button。?

// Go for Editor并打印到编辑器

    driver.switchTo().frame("iframeMathmlEditorcke_1");

    WebElement editor = driver.findElement(By.xpath("//body")); 

    JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;  

    jsExecutor.executeScript("arguments[0].innerHTML = 'Hello World'", editor);

//从编辑出来

    driver.switchTo().frame("iframeMathmlEditorcke_2");

    driver.switchTo().defaultContent();

/单击“确定”按钮

    driver.findElement(By.id("cke_161_label")).click();

2 个答案:

答案 0 :(得分:0)

如果您粘贴网页的HTML代码会很好,这会显示iframe的排列。

但共同的基础是, 首先来自" iframeMathmlEditorcke_1"通过切换到默认帧然后切换到其他帧" iframeMathmlEditorcke_2" (我假设您的确定按钮位于此iframe中,并且这些不是嵌套的iframe)。

然后尝试单击“确定”按钮。

答案 1 :(得分:0)

此解决方案对我有帮助:

        final WebElement iFrame = Arrays.stream(iframes)
            .filter(frame -> frame.getAttribute("id").startsWith("iframeMathmlEditorcke")
            .findFirst().orElseThrow(() -> new AssertionError("Detail message what is wrong"));

        element.clear();
        element.sendKeys(value);
        driver.switchTo().defaultContent();