2009-03-02 4 views
3

я пытаюсь создать Watir тест, который заполняет Инн текстовое поле, написав feksавтозаполнения с рубином (Watir)

«долгота» и ждать, пока выпадающий запускается, а затем нажав на первый элемент в список.

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

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

Защиту test_scriptflight_autocomplete @ site.navigate_to (: путешествия,: полет) from_field = @ site.ie.text_field (: идентификатор, "locOriginName") to_field = @ site.ie.text_field (: идентификатор, «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 

конец

ответ

2

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

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, а при передаче только что созданного объекта события.