2009-11-03 5 views
2

J'ai une page web avec une grille, et certaines colonnes ont un lien dans l'en-tête de colonne qui va trier les valeurs par cette colonne [en faisant un tour vers le serveur] . Je souhaite écrire un seul test Watir qui identifiera ces liens de tri et cliquera sur chacun d'entre eux successivement. Ceci est un test de fumée qui garantit qu'aucune exception d'exécution ne résulte de l'expression de tri.Comment faire une boucle sur les liens et cliquer sur chacun à l'aide de Watir

Ma question est, quelle est la meilleure façon de (1) identifier ces liens, et (2) cliquez sur chacun d'eux en succession? Voilà ce que j'ai jusqu'à présent:

$ie.table(:id, "myGrid").body(:index, 1).each do | row | 
    row.each do | cell | 
    ## todo: figure out if this contains a sort link 
    ## todo: click the link now, or save a reference for later? 
    end 
end 
+0

Pouvez-vous poster du code HTML pertinent? –

Répondre

1

Je pense il ne sera pas possible de cliquer sur chaque lien dans la boucle depuis cliquant sur un lien déclenchera une charge page et je crois que ce invalident l'autre Watir lien Éléments. Donc, ce que je suggère est que vous preniez les identifiants des liens, puis bouclez les uns sur les autres en faisant les clics. Par exemple, j'ajouterais aussi une classe spécifique à ces liens de tri et un identifiant significatif aussi. Par exemple, j'ajouterais une classe spécifique à ces liens de tri. Quelque chose le long des lignes de:

<a id='sortby-name' class='sorting' href='...'>Name</a> 

Ensuite, vous pouvez les choisir avec ceci:

$ie.table(:id, "myGrid").body(:index, 1).each do | row | 
    # pick sorting links' ids 
    sorting_link_ids = row.links.select{|x| x.class_name == "sorting"}.map{|x| x.id} 
end 

Et puis, vous faites votre cliquant comme ceci:

sorting_link_ids.each do |link_id| 
    $ie.table(:id, "myGrid").body(:index, 1).link(:id, link_id).click 
end 

Hope that helps!

+0

C'est exactement ce que j'ai fini par faire, j'ai juste oublié de revenir et de répondre à ma propre question :) Vous avez raison d'identifier les liens dans une boucle puis de les cliquer dans une autre. –

Questions connexes