当前位置: 首页 > 面试题库 >

如何在iframe中的Rich Text编辑器中使用SendKeys(webdriver)命令

卓新知
2023-03-14
问题内容

我面临以下问题。我无法在其中有文本编辑器的iframe中键入文本:这是html:

<iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" style="width: 100%;  height: 100%;" aria-describedby="cke_39" title="Текстов редактор за форматиран текст,description1" src="" tabindex="0" allowtransparency="true">
<!DOCTYPE html>
<html lang="bg" dir="ltr">
<head>
<body class="cke_editable cke_editable_themed cke_contents_ltr" contenteditable="true" spellcheck="false">
<p>
<br>
</p>
</body>
</html>
</iframe>

到目前为止,这是我所做的,但是测试成功通过,并且文本编辑器中未写入任何文本。可能的解决方案是使用Javascript执行程序,但我对此并不熟悉。

WaitTool.waitForElementPresent(Browser.instance, By.tagName("iframe"), 10);
WebElement iframe = Browser.instance.findElement(By.tagName("iframe"));
Browser.instance.switchTo().frame(iframe);
WebElement description=Browser.instance.findElement(By.xpath("//body[@class='cke_editable cke_editable_themed cke_contents_ltr']"));
description.click();
description.sendKeys("someText");
Browser.instance.switchTo().defaultContent();

提前致谢!


问题答案:

有多种实现方法。这是您可能想要看看的文章。

使用Selenium WebDriver测试所见即所得的编辑器

  • 直接发送密钥

这种方法是您尝试过但没有奏效的方法。请务必设法让你的定位程序<iframe><body>正确。否则,我建议使用JavaScriptExecutor更稳定的解决方案。

  • 设置innerHTML

    WaitTool.waitForElementPresent(Browser.instance, By.className(“cke_wysiwyg_frame”), 10);
    WebElement iframe = Browser.instance.findElement(By.className(“cke_wysiwyg_frame”));
    Browser.instance.switchTo().frame(iframe);

    WebElement description = Browser.instance.findElement(By.cssSelector(“body”));
    (JavascriptExecutor)Browser.instance.executeScript(“arguments[0].innerHTML = ‘

    ‘“, description);

  • 使用CKEditor的本机API

    // no need to switch iframe
    (JavascriptExecutor)Browser.instance.executeScript(“CKEDITOR.instances.ckeditor.setData(‘

    Native API text

    Editor’)”);



 类似资料:
  • 问题内容: 在这种情况下有一个under 。而且我必须选择外表去内在,并写在内在的身体上。 接下来,我必须从内部到外部出来,然后单击“确定”按钮(位于外部)。 以下是我的代码 以下是我的问题: 我的测试代码可以正常工作到第4行,即写到正文中,但是我想从内到外显示它未找到该元素。 我尝试使用索引,父母,亲戚,但没有运气。 注意: 如果我不选择内部框架()。我可以单击“确定”按钮。 问题答案: 在We

  • 问题内容: 我有一个需要加载到mongodb中的json文件(〜3Gb)。不少json键包含一个。(点),这会导致加载到mongodb的操作失败。我想加载json文件,并在此过程中编辑键名,例如用空空格替换点。使用以下python代码 名为RemoveDotKey的object_hook应该遍历所有键,它的键包含一个点,创建一个副本,用空格替换该点,然后返回副本。创建了dataPart的副本,因为

  • 我有Atom编辑器,想知道如何从Atom终端打开文件或文件夹。我用的是Mac。我正在寻找这样做的方法: 这可能吗?我如何设置它?

  • 问题内容: 我正在尝试使用Selenium / Webdriver 自动将一些文本插入使用tinymce创建的文本框中 该文本框不是普通的香草文本框,因此以下操作无效: 像使用纯文本框https://code.google.com/p/selenium/wiki/GettingStarted一样可以正常工作 以下是屏幕截图,显示了如何在浏览器的“元素”选项卡中查看textarea元素的位置:htt

  • 问题内容: 我想选择一个 iframe 并在“ 正文”中 输入值。我正在尝试以下代码。 HTML代码: selenium代码: 但是我无法输入值。 有人可以帮我吗? 问题答案: 无需发送密钥,您可以直接进行设置。 如果您要测试诸如TinyMCE之类的WYSIWYG编辑器,请随时阅读以下文章: 使用Selenium WebDriver测试所见即所得的编辑器 然后,您可以直接通过编辑器的API设置内容

  • 在“SQL 编辑器”选项卡,你可以创建和编辑视图的 SELECT 语句 SQL。Navicat Data Modeler 为编辑视图定义提供广泛的高级功能,例如:编辑代码功能、智能自动完成代码、设置 sql 格式及更多。 【提示】当你在视图创建工具创建视图,SELECT 语句将会自动生成。 美化 SQL(仅适用于非 Essentials 版) 若要格式化凌乱的 SQL 代码到一个结构良好的脚本,你