如何使用Selenium RC for Eclipse Java将文本输入到tinymce文本区域

时间:2012-08-14 19:34:40

标签: java selenium tinymce selenium-rc

我目前正在尝试自动化测试用例,我需要输入所需文本区域字段的值。

文本区域使用TinyMCE 3.4.9

我在网上找到了一个建议的博客 selectFrame(包含tinymce的iFrame) 焦点(tinymce) 类型(tinymce,text)

由于Selenium RC无法找到iframe,因此无效。但是,我尝试使用Firefox插件,至少我可以选择iframe并关注编辑器,但我无法输入任何文本。使用RC,我所做的一切似乎都无法运作

我也尝试使用html编辑器输入文字。因此selenium可以模拟单击按钮打开html编辑器,然后RC将无法找到文本区域或者我将得到一个错误,使得该元素不再附加到DOM(沿着该行的某些内容)

很抱歉,如果这听起来很混乱。

12 个答案:

答案 0 :(得分:11)

这对我有用:

命令:runScript target:tinyMCE.activeEditor.setContent('替换为你的文字')

来自http://www.tinymce.com/forum/viewtopic.php?id=27960

答案 1 :(得分:3)

如果您在一个页面上有多个tinyMCE表单,我建议您使用 命令:runScript
目标:tinyMCE.get(' textarea_id')。setContent(' Your Text')

答案 2 :(得分:2)

首先切换到第

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

然后你按ID获取元素并用文本填充

 var el = driver.findElement(By.id("tinymce"));
 el.sendKeys("YOUR TEXT");

答案 3 :(得分:0)

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

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

这对测试TinyMCE本身的使用没有帮助,但您至少可以填写表格以完成并向前移动测试...... :)

答案 4 :(得分:0)

对于TinyMCE 3.4.x和Firefox中的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

答案 5 :(得分: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));

答案 6 :(得分: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命令在我的脚本中工作。有什么我想念的吗?

答案 7 :(得分:0)

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

var obj = ((IJavaScriptExecutor)webDriver).ExecuteScript("tinyMCE.activeEditor.setContent('" + text + "');");

答案 8 :(得分:0)

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

  • FireFox 20.01
  • tinyMCE 3.4.9
  • Selenium 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');

答案 9 :(得分:0)

在Selenium webdriver PHPUnit_Extensions_Selenium2TestCase中,这可以在您使用时运行:

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

如果要添加文字。

答案 10 :(得分:0)

  

WebElement bodyIframe = driver.findElement(By.tagName(“iframe”));   。driver.switchTo()帧(bodyIframe); WebElement mce =   driver.findElement(By.id( “TinyMCE的”)); mce.sendKeys(“这是测试!!!!”);

这对我来说很完美

答案 11 :(得分:-1)

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