тест на автозаполнение с помощью ruby ​​(watir) - PullRequest
3 голосов
/ 02 марта 2009

я пытаюсь создать тест watir, который заполняет текстовое поле, написав feks

"lon" и ожидание срабатывания раскрывающегося списка, а затем щелчок по первому элементу в списке.

Написание «lon» должно вызывать множество вариантов, таких как «Лондон, Англия, Storbritannia», Лондон, Кентукки, США и т. Д. Возможно ли это как-то с помощью Watir ?? Спасибо заранее.

Так выглядит мой код до сих пор, Это не работает, хотя, и мне интересно, где я что-то пропустил.

def test_scriptflight_autocomplete @ site.navigate_to (: путешествие,: полет) from_field = @ site.ie.text_field (: id, "locOriginName") to_field = @ site.ie.text_field (: id, 'locDestinationName') from_field.set ( 'осло')

# need to fire a key press event after setting the text since the js is handling
# trigger the autocomplete (requires a 'keydown')
from_field.fire_event('onkeydown')   

# wait until the autocomplete gets populated with the AJAX call
@site.ie.wait_until{@site.ie.div(:id, 'onlinesearch').lis.length > 0}
puts @site.ie.div(:id, 'locOriginName ').lis.length
puts @site.ie.div(:id, 'locOriginName').li(:index, 5).text

# find the li you want to select in the autocomplete list and click it
@site.ie.div(:id, 'from-field').li(:text, 'Oslo, Oslo, Norge').click

конец

1 Ответ

2 голосов
/ 03 марта 2009

Я и коллега (Магнар) на работе нашли этот блог, который помог нам найти ответ, который я искал.

http://blog.saush.com/2008/05/using-rspec-and-watir-for-functional-testing-in-web-applications/

class Watir::IE  
    def fire_keydown_on(element_id, key)  
        ie.Document.parentWindow.execScript("key = document.createEventObject(); key.keyCode = #{key}")  
        ie.Document.parentWindow.execScript("document.getElementById('#{element_id}').fireEvent('onkeydown', key)")  
    end  
end

Из блога:

Мы только что добавили новый метод "fire_keydown_on" для класса IE, который принимает идентификатор элемента и ключ. Этот метод вызывает Javascript для создания объекта события (кстати, это работает только в IE) и устанавливает код ключа равным 13, который является ключом возврата каретки (ключ ввода). Он вызывает Javascript для получения элемента HTML (используя идентификатор элемента) и запускает на нем событие «onkeydown», одновременно передавая объект события, который он только что создал.

...