如何使用webdriver在iframe中设置标签的innerHTML

时间:2014-04-09 18:34:00

标签: javascript selenium selenium-webdriver

<iframe>
    <html>
        <head>
        </html>
        <body>
            <blockquote>
                <p>
                "set text here"
                </p>
            </blockquote>
        </body>
    </html>
</iframe

您好我正在尝试在iframe中设置标签的innerHTML,而我似乎无法让它工作

textareaID.setHTML("Some Text");

通过使用runScript,它会写入textarea,但它似乎没有在blockquote标签内写入

selectFrame(iframeLocator);

sendKeys("//html/body/blockquote/p", "Some Text");

selectFrame选择框架,sendKeys发送我想要的文本,但它也不会在p标签内写入文本。当我将其运行到// html / body时它工作正常但它似乎不适用于// html / body / blockquote / p

2 个答案:

答案 0 :(得分:0)

修改您的<p>

<p id="text">
 "set text here"
</p>

放入<head>

<script>
document.getElementById("text").innerHTML="some new text"
</script>

答案 1 :(得分:0)

我会看看常见问题here

来自selenium wiki:

答:假设iframe被命名为&#34; foo&#34;:

driver.switchTo().frame("foo");
WebElement editable = driver.switchTo().activeElement();
editable.sendKeys("Your text here");

有时这不起作用,这是因为iframe没有任何内容。在Firefox上,您可以在&#34; sendKeys&#34;:

之前执行以下操作
((JavascriptExecutor) driver).executeScript("document.body.innerHTML = '<br>'");

这是必需的,因为默认情况下iframe没有内容:没有任何内容可以发送键盘输入。此方法调用插入一个空标记,可以很好地设置所有内容。 一旦完成,请记得切换出框架(因为所有进一步的交互将与此特定框架一起):

  

driver.switchTo()defaultContent();