使用watir webdriver将文本输入CKEditor

时间:2014-05-22 11:12:45

标签: ruby ckeditor watir-webdriver

这令我感到沮丧。

我还是ruby / watir webdriver的新手,所以我要去学习,所以要温柔。

我正在使用带有watir webdriver的ruby v2,以便自动将文本输入到嵌入页面的ckeditor中。我一直在网上翻找并阅读几乎我能找到的关于自动化的所有信息,但仍然没有成功输入文字。

ckeditor周围的html是;

<div class="cke_inner cke_reset" role="presentation">
<span id="cke_1_top" class="cke_top cke_reset_all" style="height: auto; -moz-user-select: none;" role="presentation"> 
<div id="cke_1_contents" class="cke_contents cke_reset" role="presentation" style="height: 200px;">
<span id="cke_45" class="cke_voice_label">Press ALT 0 for help</span>
<iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" style="width: 100%; height: 100%;" aria-describedby="cke_45" title="Rich Text Editor,contentItemHTML" src="" tabindex="0" allowtransparency="true">
<!DOCTYPE html>
<html lang="en" dir="ltr" webdriver="true">
<head>
<body class="cke_editable cke_editable_themed cke_contents_ltr cke_show_blocks" contenteditable="true" spellcheck="false">
<p>
entering text here
<br type="_moz">
</p>

我正在使用的代码是

$browser.iframe(:class, "cke_wysiwyg_frame cke_reset").body(:class, "cke_editable cke_editable_themed cke_contents_ltr cke_show_blocks").send_keys("TEST")

我尝试过send_keys'Test'

这会将光标放在正确的区域,但不输入文字。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我发现send_keys对于富文本编辑器来说很挑剔。例如,我看到代码在Chrome中正常运行,但在Firefox中却没有。同样,很难控制send_keys插入文本的位置。

假设您没有尝试实际测试CKEditor的功能,最好使用watir-webdriver.com的建议,即通过javascript直接设置html。

这是通过以下方式完成的:

browser.execute_script("CKEDITOR.instances.editor1.setData('TEST');")

其中editor1是CKEditor的id,TEST是您希望编辑器等于的html。

这是一个工作示例(使用CKEditor演示页面):

browser = Watir::Browser.new
browser.goto "http://ckeditor.com/demo"
browser.execute_script("CKEDITOR.instances.editor1.setData('TEST');")
sleep(2) # So you can see the change