2017-07-18 1 views
0

Je fais mes premiers pas avec la gemme page-objet travaillant avec Cucumber et Watir. Ma présente étape fichier de définition a des commandes comme:Page-object gem - comment implémenter wait_until_present

@browser.text_field(:name => 'Username').wait_until_present.set username 

Utiliser la page objet Je teste le watir (désolé) avec le code suivant:

class HomePage 
    include PageObject 
    text_field(:user_name, name: 'username').wait_until_present 
} 
end 

home_page = HomePage.new 
home_page.user_name = 'Mickey' 

Cela ne fonctionne pas comme je reçois un 'aucune erreur de méthode'

Un peu de googling révèle que je peux le faire. mais il utilise when_visible au lieu de wait_until_present

class HomePage 
    include PageObject 
    text_field(:user_name){ 
     text_field_element(:name => 'username').when_visible 
} 
end 

home_page = HomePage.new 
home_page.user_name = 'Mickey' 

Quel est le meilleur d'utiliser wait_until ou when_visible avec la page objet? Je ne veux pas mettre beaucoup de sommeil dans mes dossiers si possible.

Répondre

2

En supposant que vous utilisez la dernière version de Watir, vous pouvez simplement faire:

class HomePage 
    include PageObject 
    text_field(:user_name, name: 'username') 
end 

home_page = HomePage.new 
home_page.user_name = 'Mickey' 

En d'autres termes, vous n'avez pas besoin d'attendre explicitement le champ de texte soit présent avant de le mettre.

Watir a bénéficié d'un certain nombre d'améliorations, notamment l'attente automatique de la présence d'éléments avant de les définir. En conséquence, vous devriez rarement (jamais?) Besoin d'appeler wait_until_present.

+0

Merci Justin, j'écoutais un podcast Watir qui vous présentait ce matin dans le train. J'utilise le dernier Watir 6. Je vais commencer à faire confiance à Watir et sortir quelques-uns des wait_until_presents et voir comment je m'entends. – albatross