Предварительная загрузка буфера обмена браузера для тестирования вставки в поля с помощью watir-webdriver - PullRequest
3 голосов
/ 28 июня 2011

В нашем веб-приложении есть некоторый код события, чтобы «отформатировать» любой текст, вставленный в поле, чтобы любые стили HTML не нарушали наши данные.

Что было бы хорошим способом предварительной загрузки браузерабуфер обмена, чтобы я мог проверить вставку в поле ввода?

Есть ли какой-нибудь способ сделать это программно или мне нужно, чтобы тестовый скрипт посетил "исходную страницу" и скопировал текст перед переходом в наше приложение?

Приветствуются любые идеи или фрагменты кода.

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Работа с буфером обмена будет зависеть от вашей платформы.Например, в OS X вы можете использовать pbcopy и Command-V:

open('|pbcopy', 'w') { |io| io << 'some text' }
browser.text_field(:name => 'q').send_keys([:command, 'v'])

Я знаю, что в Linux есть эквиваленты (xclip?).Не уверен насчет Windows.

1 голос
/ 29 июня 2011

Я хотел бы рассмотреть возможность использования метода .value =. Если он реализован так же, как и в watir, то он не вызывает никаких событий, и устанавливает значение непосредственно , а затем отправляет соответствующее событие (в зависимости от того, что, если какие-либо события отслеживаются ) такие как onKeypress. Я попытался выяснить из rdoc Watir-webdriver для текстового поля , если это различие между .set и .value = сохраняется, но то, как их описывает документ (по крайней мере, там), делает их взаимозаменяемыми .. (Джариб, можешь уточнить ???)

Потенциально вам может понадобиться сначала запустить что-то вроде onFocus, в зависимости от используемых вами элементов управления. Например, как описано в этом случае SO Устанавливая текстовое поле с маской JQuery для маски jquery, они должны были в конечном итоге запустить событие unmask, чтобы иметь возможность даже установить поле.

Это хороший пример использования методов, описанных здесь Как узнать, какие события JavaScript сработали? и в пункте SO, связанном в комментариях к этому вопросу, чтобы выяснить, какие события сработали когда вы вручную вставляете что-то в поле. (обратите внимание, что я использовал бы и мышь, и что-то вроде табуляции для перемещения между полями и установки фокуса, события, общие для этих двух методов, наиболее вероятны для элементов управления.

Я предполагаю, что у вас есть какой-то клиентский javascript, который должен проверить, что было вставлено в поле, и, следовательно, причину этого теста. Если вы используете стандартные поля HTML без JavaScript, то я бы посчитал, что этот конкретный контрольный пример практически не отличается от «тестирования браузера», поскольку поддержка вырезания и вставки в полях ввода является стандартной функцией браузера. В этом случае вы как бы «зарезервированы», и я бы не стал беспокоиться о таком тесте.

...