2010-10-12 12 views
0

Je suis nouveau dans les tests d'automatisation de Watir et je voudrais obtenir de l'aide pour la liste déroulante.Sur notre site Web, nous avons un état déroulant où vous entrez la première lettre de l'état (dans mon exemple C pour la Californie) et il se réduit à tous les états commençant par C. Une fois que vous avez la liste, vous devez cliquer sur l'état correct. Mais j'ai des difficultés à choisir l'état correct.Firewatir: scripts Firewatir pour sélectionner un élément dans le menu déroulant

(ci-dessous est le code html de notre site Web:


<div class="x-form-field-wrap x-trigger-wrap-focus" id="ext-gen202" style="width: 166px;"> 
<input type="hidden" id="entityStateCode" name="entityStateCode" value=""> 
<input type="text" id="ext-comp-1005" autocomplete="off" size="24" class=" x-form-text x-form-field x-form-focus"> 

j'ai utilisé ce qui suit pour automatiser le scénario, mais aucun d'entre eux me donnent ce que je cherche:

@ browser.text_field (: id, "ext-comp-1005"). Value = ("CA")

@ browser.text_field (: id, "ext-comp-1005"). S et ("CA")

@ browser.text_field (: id => "ext-comp-1055",: index => 5) .set "CA"

j'apprécie vraiment que si vous pouvez pointer moi dans la bonne direction.

Merci

Répondre

0

J'ai rencontré une situation similaire auparavant. Dans ma situation, il y avait un TABLE à l'intérieur du DIV qui avait une ligne séparée pour chaque élément dans la liste déroulante dynamique. Donc, si tel est le cas pour vous, alors vous auriez besoin d'utiliser quelque chose comme ceci pour accéder aux éléments:

@browser.text_field(:id,"ext-comp-1055").set "C" 
table = @browser.div(:id, "ext-gen336").table(:index, 1) 
puts "First entry value: #{table[1][1].text}" 
table[2][1].click # second entry 

Essayez d'imprimer le code HTML pour la DIV lors de l'exécution pour voir les détails de ce que vous avez besoin d'interagir avec si ça ne marche pas.

0

Vous ne dites pas à ce que le problème est, cela ne suffit pas:

aucune de ces me donne ce que je suis cherche

Cela devrait entrer CA dans le champ de texte:

browser.text_field(:id => "ext-comp-1005").set("CA") 

Si vous saisissez du texte dans un champ de texte incorrect, modifiez :id => "ext-comp-1005".

Si vous entrez du texte dans le champ de texte correct, mais que la liste des états n'apparaît pas, vous devez probablement déclencher un événement javascript. Jetez un oeil à How to find out which JavaScript events fired? question.

+0

Merci d'avoir répondu à ma question.En fait, cela fonctionne parfaitement bien pour text_field mais dans mon cas, j'ai une liste déroulante avec auto complete, donc quand j'ai utilisé la méthode ci-dessus, elle définit la valeur à CAA qui va à l'encontre . J'ai essayé d'utiliser div mais pas d'aide. J'ai fatigué en utilisant le div mais cela ne fonctionne pas non plus.Voici le code que j'utilise @ browser.text_field (: id, "ext-comp-1055"). Set "C" et une fois que le menu déroulant montre les états commençant seulement par CI utilise @ browser.div (: id => "ext-gen336",: index => 2) .click S'il vous plaît laissez-moi savoir si je fais quelque chose de mal.Merci! –

+0

Je ne comprends toujours pas le problème. –