I am using Cucumber and Selenium to test typing in a contenteditable div. (Wikipedia's new VisualEditor, if you're curious.)
This is how the current code looks, more or less:
When(/^I type (.+)$/) do |text|
on(VisualEditorPage).content_element.send_keys(text)
end
I'd love to test not just typing of strings, but to test actual keyboard keys. The reason I need to do this is that I want to test typing in different languages and different keyboard layouts. The English keyboard has simple one-to-one mapping between keys and characters, but this is not true for all keyboards; Japanese is a very extreme example - some Latin letters are typed there, and then they are converted to a list of possible Japanese spellings from which the users can choose the desired thing. Testing this by simply using send_keys with the Japanese characters misses the point, because that is not what the end user actually does.
In a simpler scenario, I want to test pressing keys when a Burmese or Sinhalese keyboard layout is on and test that the result text is correct; just pasting a whole string is not great, because the keyboard layout re-positions the characters while typing according to smart rules.
So - is there anything in Selenium that allows this? Instead of something like send_keys 'abc'
to do something like send_keys :a_key, :b_key, :c_key
?
Thanks!