首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用webdriver与可爱的编辑器交互

使用webdriver与可爱的编辑器交互
EN

Stack Overflow用户
提问于 2013-04-19 23:56:10
回答 1查看 487关注 0票数 0

有人知道如何使用webdriver与可爱的编辑器进行交互吗?我要清除文本吗?

代码语言:javascript
复制
 <iframe id="CE_Editor1_ID_Frame" src="cuteeditor_files/template.asp"
 frameborder="0" class="CuteEditorFrame CuteEditorFrame"
 style="background-color: white; border: 1px solid rgb(221, 221, 221);
 height: 100%; width: 100%; display: block;"></iframe>

下面的代码不能工作吗?

代码语言:javascript
复制
driver.switchTo().frame(0);
driver.switchTo().activeElement().clear();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-20 07:24:09

我在http://cutesoft.net/example/general.aspx上看了一下可爱的编辑器演示,现在我明白为什么您使用driver.switchTo().activeElement()而不是查找文本区/输入,因为iframe是“文本区”,而您想要清除iframe中的所有内容。

我假设你的和演示很相似。

代码语言:javascript
复制
<iframe id="CE_Editor1_ID_Frame" src="cuteeditor_files/template.asp" frameborder="0" class="CuteEditorFrame CuteEditorFrame" style="background-color: white; border: 1px solid rgb(221, 221, 221); height: 100%; width: 100%; display: block;">
    <html>
        <head></head>
        <body>
            <table>the real stuff in the editor, you want to clear this, right?</table>
            <br>
            <br>
        </body>
    </html>
</iframe>

我不认为Selenium提供任何删除节点的功能,但是您可以通过JavascriptExecutor来实现这一点。警告:未测试的代码,只有逻辑在这里。你需要自己调试一下。

代码语言:javascript
复制
// first try to avoid switching frames by index, unless you have no other ways.

// if you have only one frame with class name CuteEditorFrame
WebElement editorFrame = driver.findElement(By.cssSelector(".CuteEditorFrame"));
driver.switchTo().frame(editorFrame);

// if the id 'CE_Editor1_ID_Frame' not dynamic
WebElement editorFrame = driver.findElement(By.cssSelector("#CE_Editor1_ID_Frame"));
driver.switchTo().frame(editorFrame); // driver.switchTo().frame("CE_Editor1_ID_Frame");

// then remove everything inside the iframe's body
JavascriptExecutor js;
if (driver instanceof JavascriptExecutor) {
    js = (JavascriptExecutor)driver;
}
WebElement editorBody = driver.findElement(By.cssSelector("body"));
js.executeScript("arguments[0].innerHTML = ''", editorBody);

// alternatively, using sendKeys directly is a better way
WebElement body = driver.findElement(By.tagName("body")); // then you find the body
body.sendKeys(Keys.CONTROL + "a"); // send 'ctrl+a' to select all
body.SendKeys("Some text");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16108693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档