6
votes

Accéder à un élément sans attributs en ratière

Utiliser Watir, existe-t-il un moyen d'accéder à un élément sans attributs?

Par exemple: P>

<span>Text</span>


0 commentaires

3 Réponses :


11
votes

ignorer les problèmes non liés à la naissance d'étiquettes en premier lieu ou demandant des attributs uniques de vos développeurs (ou de vous-même), vous pouvez toujours accéder à un élément via ses éléments parents ou par index.

Par exemple: Texte P>

div(:how => what).table(:how => what).td(:how => what).span(:how => what).text


1 commentaires

Notez que ce n'est que la première plage si vous utilisez des versions plus anciennes d'eaux qui utilisent une indexation basée sur une indexation basée sur Wattir 2.x ou Wattir-webdiver qui utilisent l'indexation zéro basée sur une indexation zéro (comme Ruby) : index => 1 serait la deuxième instance d'une étendue dans la div



9
votes

S'il a du texte: xxx

Si vous ne connaissez qu'une partie du texte que vous pouvez utiliser une expression régulière: xxx


0 commentaires

8
votes

Il y a essentiellement trois façons de résoudre ce défi particulier. Zeljko a adressé le premier qui est basé sur ce qui est à l'intérieur em> l'élément fort> tel que le texte connu. Adam s'adresse à la manière la plus courante, Qu'est-ce que entourant ou contenant em> l'élément strong> Je vais aborder la troisième voie, qui est Qu'est-ce que est enfermé par ou à côté de em> l'élément fort>.

Si vous avez un élément connu à l'intérieur de celui que vous voulez, vous pouvez commencer avec cela et utiliser la méthode .parent code> pour obtenir l'élément "conteneur". Ceci peut également être utilisé pour trouver un élément "frère" en utilisant .parent pour accéder à celui que vous voulez via un conteneur commun tel qu'une rangée de table. La première utilisation est assez évidente, mais la seconde est probablement plus courante et très utile lorsque vous travaillez avec des tables. P>

Par exemple, disons que vous avez une table avec plusieurs lignes de données dans lesquelles une colonne est une pièce unique, des numéros de pièce unique, et une autre colonne a des liens "Ajouter au panier". Maintenant, si vous souhaitez ajouter une pièce spécifique à votre panier, vous pouvez utiliser l'index combiné avec le texte 'Ajouter au panier' à l'aide de code comme celui-ci en fonction du 5ème lien avec ce texte spécifique P>

browser.cell(:text => 'Part no. 123-45').parent.link(:text => 'add to cart').click


4 commentaires

Je n'ai jamais pu imaginer tant de réponses à un simple problème.


Un problème simple, mais présenté sous une forme très générale sans contexte ni html environnant. D'où la variété de réponses que chacune est beaucoup moins générale que la question. Le mien adresse certes une niche plus étroite .. hmmm une modification utile me vient à l'esprit.


@DAVEMCNULLA, ma réponse révisée fait-elle mettre les autres réponses dans un peu plus de contexte maintenant?


Cela donne un sens aux trois réponses différentes. J'apprécie également la leçon d'utiliser la relation dans les objets pour trouver et manipuler au lieu de la solution XPath.