【问题标题】:How to set innerHTML of tag inside iframe using webdriver如何使用 webdriver 在 iframe 中设置标签的 innerHTML
【发布时间】:2014-04-09 18:34:00
【问题描述】:
<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

【问题讨论】:

    标签: javascript selenium selenium-webdriver


    【解决方案1】:

    修改你的&lt;p&gt;

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

    置入&lt;head&gt;

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

    【讨论】:

    • 感谢您的回复,但我无权修改 html。我只是在尝试测试 iframe 内的 onclick 事件的功能和 blockquote 和 p 标签
    【解决方案2】:

    我会看看常见问题解答here

    来自 selenium 维基:

    A:假设 iframe 被命名为“foo”:

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

    有时这不起作用,这是因为 iframe 没有任何内容。在 Firefox 上,您可以在“sendKeys”之前执行以下操作:

    ((JavascriptExecutor) driver).executeScript("document.body.innerHTML = '<br>'");
    

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

    driver.switchTo().defaultContent();

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2018-07-10
      • 2015-08-09
      • 2014-06-08
      相关资源
      最近更新 更多