6

I'm currently trying to automate test cases where I need to enter values for a required Text Area field.

The text area uses TinyMCE 3.4.9

I found a blog online that suggested selectFrame (iFrame containing tinymce) focus (tinymce) type (tinymce, text)

that didn't help since Selenium RC can't locate the iframe. However, I tried this with the Firefox plugin and at the very least I can select the iframe and focus the editor, but I can't enter any text. With RC, nothing I do seems to work

I also tried entering text using the html editor. So selenium can emulate clicking the button to open the html editor, then RC would either fail to find the text area or I'll get an error such that the element is no longer attached to the DOM (something along that line)

Sorry if this sounds confusing.

4

13 回答 13

11

这对我有用:

命令:runScript 目标:tinyMCE.activeEditor.setContent('替换为您的文本')

http://www.tinymce.com/forum/viewtopic.php?id=27960获得

于 2012-11-27T00:10:58.010 回答
3

如果您在一页上有多个 tinyMCE 表单,我建议您使用
Command: runScript
Target: tinyMCE.get('textarea_id').setContent('Your Text')

于 2014-04-02T15:38:35.883 回答
2

首先你切换到框架

// driver is type of IWebDriver
driver.switchTo().frame(frameName or frameIndex);

然后你通过 id 获取元素并用你的文本填充它

 var el = driver.findElement(By.id("tinymce"));
 el.sendKeys("YOUR TEXT");
于 2013-02-03T16:41:20.467 回答
1

WebElement bodyIframe = driver.findElement(By.tagName("iframe")); driver.switchTo().frame(bodyIframe); WebElement mce = driver.findElement(By.id("tinymce")); mce.sendKeys("这是为了测试!!!");

这对我来说非常有用

于 2014-08-30T09:37:46.183 回答
0

我一直在尝试使用这个解决方案:

<tr>
  <td>type</td>
  <td>dom=document.getElementById('NAME_ifr').contentDocument.body</td>
  <td>Editor content</td>
</tr>

替换了“name_ifr”。首先在进入tinymce框架之前输入框架名称并插入,然后将名称替换为'tinymce'并在输入框架后插入,根据所有规则键入必须发生的地方。但我得到的只是错误。不知何故,我从来没有让 DOM 或 js 命令在我的脚本中工作。有什么我想念的吗?

于 2012-09-17T10:16:15.617 回答
0

对于 Firefox 中的 TinyMCE 3.4.x 和 Selenium IDE,这对我有用。将您的 TinyMCE 实例的 id 替换为NAME以下内容:

<tr>
    <td>type</td>
    <td>dom=document.getElementById('NAME_ifr').contentDocument.body</td>
    <td>Editor content</td>
</tr>

这是基于https://gist.github.com/809728

于 2012-08-23T20:44:47.350 回答
0

在 Selenium webdriver PHPUnit_Extensions_Selenium2TestCase 中,这在您使用时有效:

$this-> execute(array('script' => "tinymce.get('cms_cpg_content').setContent('Lorem ipsum dolor sit amet,...')", 'args' => array()));

当您要添加文本时。

于 2014-05-15T09:35:55.730 回答
0

我们使用techiebyday.blogspot.com中描述的过程,它在当前版本的 Selenium RC(至少到 2.20)和 TinyMCE(3.4 后)中运行良好。在 C# 中,它看起来像这样:

string editorFrameId = editorId + "_ifr";
selenium.Focus(String.Format("dom=document.getElementById('{0}').contentWindow.document.body", editorFrameId));
selenium.GetEval(String.Format("selenium.browserbot.getCurrentWindow().document.getElementById('{0}').contentWindow.document.body.innerHTML = '{1}';", editorFrameId, fillString));
于 2012-08-28T15:27:04.057 回答
0

如果页面中有一个 TinyMCE 元素:

var obj = ((IJavaScriptExecutor)webDriver).ExecuteScript("tinyMCE.activeEditor.setContent('" + text + "');");
于 2013-04-12T17:02:43.687 回答
0

我能够让 Selenium 测试与 TinyMCE 一起工作的唯一方法是不使用 TinyMCE 进行测试。

使用一些服务器端向导在测试条件下选择性地禁用 TinyMCE 插件。

这不会帮助您测试 TinyMCE 本身的使用,但您至少能够填写表格以完成并推进您的测试...... :)

于 2012-08-16T14:54:35.423 回答
0

我在 tinyMCE 编辑器中输入文本时也遇到了问题:

  • 火狐 20.01
  • tinyMCE 3.4.9
  • 硒 IDE 1.10.0

我的表单中有多个 tinyMCE 编辑器。

解决方案(使用 Selenium IDE,可以轻松移植到 Selenium RC):

  • 使用 firebug,找出替换 textarea 的 tinymce iframe 的 id,例如 form_editor1_ifr
  • 从这个id中去掉“_ifr”得到原始textarea的id
  • 在 Selenium IDE 中的 runScript 命令的目标中使用此 id:tinyMCE.get('form_editor1_ifr').setContent('the content');
于 2013-05-02T07:34:35.747 回答
0

我能够使用 Selenium RC 解决此问题,已完成以下步骤(附上截图供您推荐)

  1. 在 tinyMCE 编辑器上,单击高级选项图标
  2. 点击“<>”源代码图标
  3. 出现源代码弹窗,输入文字点击确定
  4. 文本出现在 TinyMCE 编辑器中 在此处输入图像描述

仅供参考,我已经给出了 CSS 定位器的步骤

  • 单击高级选项按钮: css= tr[id*='tinymce'] td * div[aria-label='Advanced Options'] 按钮

  • 点击源代码: css= tr[id*='tinymce'] td * div[aria-label='Source code'] 按钮

  • 点击弹出 textarea css= div[class*='mce-floatpanel'][aria-label='Source code'] * textarea

  • 单击弹出窗口上的确定按钮 css= div[class*='mce-floatpanel'][aria-label='Source code'] * div>button:contains('Ok')

  • 验证 tinymce css=body p:contains 中存在的文本(这是测试)

希望这能解决你的问题:)

于 2015-09-09T11:21:22.333 回答
-1

http://odino.org/typing-into-tinymce-with-selenium/ ...看起来 TinyMCE 和 selenium IDE 连接在 3.4.5 上不起作用,所以我的假设是这个问题已经延续到3.4.9。

于 2012-08-14T22:56:26.463 回答