2014-05-22 78 views
0

這讓我非常沮喪。用watir webdriver輸入文本到CKEditor

我還是新來的Ruby/webdriver的的Watir等學習,我走了,所以要溫柔。

我使用的紅寶石V2具有的Watir webdriver的以文字自動進入嵌入在頁面中的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「測試」

這放到正確的區域光標,而是進入沒有文字。

任何幫助將不勝感激。

回答

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 
+0

感謝賈斯汀,在這種情況下我需要的是在編輯器中輸入一個一塊信息作爲其必需項目的應用我正在編寫測試腳本,而不是測試編輯器本身。您的回答非常感謝,經過一番調整後,它的工作非常完美,並允許我繼續進行自動化。再次感謝 – Cantorion