2017-09-25 4 views
0

J'essaie de cliquer sur un lien situé dans une liste d'éléments commandés.Accès aux éléments d'éléments de liste dans une liste de commandes à l'aide de Watir

This is the HTML

La liste est un ordre de vidéos les plus vues.

J'essaie simplement de sélectionner le premier élément de liste, de sorte que le broswer navigue vers le href.

En ce moment, j'ai

$website.element(:class => "gs-c-promo-heading nw-o-link gs-o-bullet__text gs-o-faux-block-link__overlay-link gel-pica-bold [email protected]").click 

est similaire à une autre ligne de code, je dois sélectionner l'histoire en haut, fonctionne très bien. Des idées pour lesquelles cela ne fonctionne pas?

De même, comment est-ce que je saisirais tous les articles dans cette liste ordonnée et imprimerais chaque texte de lien?

+0

Y a-t-il une exception? Si non, quel est le comportement que vous voyez? –

+0

Désolé. Je reçois une erreur 'Compound class names not allowed' – BIGJOHN

Répondre

2

Je n'ai pas pu reproduire votre exception. Cependant, étant donné l'exception, la réponse serait de supprimer le nom de la classe composée - c'est-à-dire que vous ne pouvez pas avoir d'espaces dans le localisateur de classe.

La plupart des classes semblent génériques, elles pourraient donc être supprimées. Vous pouvez essayer:

$website.element(:class => "gs-c-promo-heading").click 

Si les classes sont vraiment importantes, vous pouvez utiliser le nouveau localisateur multi-classes de Watir. Cela génère un XPath important, qui ne déclencherait pas le vérificateur de classes composites de Selenium.

$website.element(:class => ["gs-c-promo-heading", "nw-o-link", "gs-o-bullet__text", "gs-o-faux-block-link__overlay-link", "gel-pica-bold", "[email protected]"]).click  

pour attraper tous les articles, je localiser les li éléments en fonction de leur data-entityid attribut qui semble descriptif:

$website.lis(data_entityid: /most-popular-watched/).each do |li| 
    puts li.link.text 
end 

Cela pourrait aussi être un moyen plus descriptif de cliquer sur le premier lien: Pouvez-vous préciser ce que vous entendez par «ne fonctionne pas»?

$website.li(data_entityid: /most-popular-watched/).link.click 
+0

Excellent. Merci beaucoup! – BIGJOHN