2009-03-02 7 views
3

je suis en train de créer essai watir qui remplit une hostellerie textfield par FEKS écritureautocomplete test déroulant avec rubis (watir)

« LON » et attendre jusqu'à ce que le menu déroulant est déclenchée, puis en cliquant sur le premier élément dans la liste. Écrire "lon" devrait déclencher de nombreuses options comme "Londres, Angleterre, Storbritannia", Londres, Kentucky, Etats-Unis et etc Est-il en quelque sorte possible à cela avec Watir ?? thnx à l'avance.

C'est ce que mon code ressemble à maintenant, ça ne fonctionne pas et je me demande où j'ai raté quelque chose.

def test_scriptflight_autocomplete @ site.navigate_to (: Voyage,: vol) from_field = @ site.ie.text_field (: id, "locOriginName") to_field = @ site.ie.text_field (: id, « locDestinationName ') from_field.set (' oslo ')

# 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 

fin

Répondre

2

moi et un collègue (Magnar) au travail trouvé ce blog qui nous a aidé à trouver la réponse que je cherchais.

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 

Du Blog:

Nous venons d'ajouter une nouvelle méthode « fire_keydown_on » pour la classe IE, qui prend dans l'identifiant de l'élément, et la clé. Cette méthode appelle Javascript pour créer un objet événement (cela ne fonctionne que dans IE) et définit le code clé à '13', qui est la clé de retour chariot (la touche entrée). Il appelle Javascript pour obtenir l'élément HTML (en utilisant l'identifiant de l'élément) et déclenche l'événement 'onkeydown', tout en transmettant l'objet événement qu'il vient de créer.