2013-09-12 4 views
1

Я использую Cucumber и Selenium, чтобы проверить ввод текста в contenteditable div. (Википедия нового VisualEditor, если вам интересно.)Могу ли я использовать send_keys Selenium или какую-либо другую функцию для отправки фактических ключей, а не символов?

Это как текущий код выглядит более или менее:

When(/^I type (.+)$/) do |text| 
    on(VisualEditorPage).content_element.send_keys(text) 
end 

Я хотел бы, чтобы проверить, не просто набрав строки, но для тестирования фактические клавиши клавиатуры. Причина, по которой мне нужно сделать это, это то, что я хочу протестировать типизацию на разных языках и различные раскладки клавиатуры. Английская клавиатура имеет простое взаимно однозначное сопоставление между клавишами и символами, но это не относится ко всем клавиатурам; Японский язык - очень экстремальный пример - там набираются некоторые латинские буквы, а затем они преобразуются в список возможных японских написаний, из которых пользователи могут выбрать нужную вещь. Тестирование этого путем простого использования send_keys с японскими символами пропускает точку, потому что это не то, что на самом деле делает конечный пользователь.

В более простом сценарии я хочу проверить нажатие клавиш при включении раскладки клавиатуры бирманского или сингальского языка и проверить правильность текста результата; просто вставка целой строки невелика, потому что раскладка клавиатуры переупорядочивает символы при наборе текста в соответствии с интеллектуальными правилами.

Итак - есть ли что-нибудь в Selenium, которое позволяет это? Вместо чего-то вроде send_keys 'abc' сделать что-то вроде send_keys :a_key, :b_key, :c_key?

Спасибо!

ответ

2

Я не пробовал это лично, но я предполагаю, что этот документ - selenium.webdriver.common.keys вместе с этим документом Legacy Keyboard Event Properties, должен помочь вам с первой попытки.

Таким образом, send_keys('\u0041\u0042\u0043'), должно быть, приравнивается к столице Латинской ABC.