2011-10-23 35 views
7

我正在測試一個條形碼讀取器輸入...它的行爲像鍵盤,但用輸入關鍵字符終止每個條形碼。我的javascript檢測到輸入密鑰並作出響應(backbone.js應用程序)。水豚:用終止輸入鍵填寫表格字段值

如何「填寫」一個表單字段與一個字符串具有終止輸入鍵值?

我的測試堆棧是黃瓜/水豚/ capybara-webkit。

回答

4

考慮使用Capybara::Driver::Selenium作爲該特定場景的頁面驅動程序。如果你這樣做,那麼你可以做這樣的事情:

place = page.find_by_id('tinymce').native 
place.send_keys("I rule!") 
place.send_key "\xEE\x80\x83" 
+0

謝謝你的建議。我已經在Selenium上成功完成了這項工作,但不像您的建議那樣簡潔。但我正試圖加快與capybara-webkit的測試。 –

+1

您可以使用標籤管理您的場景和驅動程序。例如,您可以配置您的系統,因此使用Selenium驅動程序正在運行任何標記爲@selenium的場景。通過這種方式,您可以在大多數場景中獲得webkit驅動程序的速度,並將硒用於有問題的場景。祝你好運:) – socjopata

8

實際上,似乎你可以只發送\ n到水豚的本地設置方法,並達到相同的效果(以更靈活,駕駛無關辦法)。

在我的代碼

所以,這是目前正在觸發(由JS處理)表單提交事件:

field = find("form input[type=text]") 
    field.set "my comment\n" 

(需要注意的是,作爲上拉請求的作者解釋here,這僅僅在進行你綁定到特定的keydown事件,而不是如果你綁定到表單提交應該導致它。)

+0

不完全不依賴驅動程序 - 取決於驅動程序如何實現表單輸入。例如,poltergeist只是在不久前召開了一次變更活動,而不是keydown和地段。 ([見這張票](https://github.com/jonleighton/poltergeist/issues/43)) 對我來說,這工作在硒而不是poltergeist,我檢查按鍵事件'e.keycode == 13 ' –

+0

這對我來說也不適用於Poltergeist。調試它,它看起來像分派的按鍵事件總是有'e.which == 0',這顯然是由於WebKit中的一個bug永久存在並且幾乎不受關注https://bugs.webkit.org/show_bug的CGI?ID = 16735 –