Localisateur de sélénium pour l'étiquette & lt; pour = "x" & gt;
Avec ASP.NET la balise Id sont volatils, afin de faire mes tests plus robuste je veux rechercher des éléments par leur étiquette de textes. J'ai joué un peu avec WatiN et il le fait parfaitement, mais ce projet semble sorte de mort aujourd'hui, donc je pensais que je regarde dans le Sélénium ainsi avant de me décider sur un cadre.
J'ai le code html qui ressemble à quelque chose comme ceci
<label for="ctl00_content_loginForm_ctl01_username">Username</label>:
<input type="text" id="ctl00_content_loginForm_ctl01_username" />
Je ne veux pas type:
selenium.Type("ctl00_content_loginForm_ctl01_username", "xxx");
Qui est trop dépendante de l'ID. Dans WatiN j'écrirais:
browser.TextField(Find.ByLabelText("Username")).TypeText("xxx");
Est-il un moyen de le faire dans le Sélénium?
source d'informationauteur Johan Levin
Vous devez vous connecter pour publier un commentaire.
Je crois que vous pouvez le faire avec les éléments suivants:
Le text()='nom d'utilisateur' bit obtient l'étiquette que vous voulez par son innerHTML, /@pour vous donne la valeur de son "pour" attribut.
Heads up: ce n'est pas testé (toutes mes excuses pour ça!) mais je pense que ça va marcher, sur la base de l'outillage autour de l'IDE plugin
Cela fonctionne:
Explication: vous êtes à la recherche pour l'entrée:
remplacer le "ctl00_content_loginForm_ctl01_username" par la valeur de l'attribut de l'étiquette:
Ok, cela peut être un an, mais ce qu'ils hey. Cela permet de sélectionner la première entrée sous une étiquette contenant le texte 'nom d'utilisateur'.
Je préfère généralement à l'aide de contains() car je trouve que certains navigateurs sont l'ajout d'ennuyeux dans les espaces occasionnel élément:
Noter que la seule barre oblique avant l'entrée indique qu'il sera d'un niveau bas, où la double barre oblique serait de vérifier tous les niveaux, sous l'étiquette. Utilisation XPather pour Firefox pour créer et vérifier votre Xpath, il est très utile.
Oui, vous pouvez utiliser XPath, CSS et DOM locators pour identifier votre élément. Dans cet exemple, votre XPath pourrait ressembler //lable [@='ctl00_content_loginForm_ctl01_username'] pour identifier cette étiquette particulière.