Le positionnement de l'élément de page est la chose la plus importante dans l'automatisation, et Selenium WebDriver fournit de nombreuses méthodes pour le positionnement des éléments. Les testeurs doivent être compétents dans diverses méthodes de positionnement. La méthode de positionnement la plus simple et la plus stable est utilisée.
Contenu de la lecture
Étapes de test automatisées
Lors des tests automatisés, testez le fonctionnement habituel des éléments de page du programme
1. Trouvez l'élément de page Web et affectez-le à un objet de stockage (WebElement)
2. Opérations sur des objets qui stockent des éléments de page, tels que: cliquez sur le lien, entrez des caractères dans la zone d'entrée, etc.
3. Vérifiez que les éléments de la page répondent aux attentes
Grâce à ces trois étapes, nous pouvons compléter le fonctionnement d'un élément de page et trouver l'élément de page est une étape très importante. L'élément de page ne peut pas être trouvé, et il ne peut pas être fait plus tard
La complexité pratique de la technologie des pages Web rend difficile la localisation d'un grand nombre d'éléments de page. Souvent, les gens ne savent pas comment le localiser.
Méthode d'emplacement complète
Définissez un élément de page Web à l'aide de la fonction FindElement de l'objet WebDriver
Utilisez la fonction FindElements pour localiser plusieurs éléments d'une page
Les éléments de la page ciblés doivent être stockés à l'aide de l'objet WebElement pour une utilisation ultérieure
Les méthodes couramment utilisées pour localiser les éléments de la page sont les suivantes, triées par recommandation
Méthode de positionnement | Exemple de mise en œuvre de la langue Java |
positionnement d'identité | Driver.Findelement (by.id ("Valeur d'Id")); |
Positionnement de noms | Driver.Findelement (by.Name ("Name Value")); |
Tout le positionnement du texte des liens | Driver.Findelement (by.LinkText ("Tous le texte du lien")); |
Un peu de positionnement de texte des liens | Driver.Findelement (by.PartialLinkText ("Texte partiel du lien")); |
Positionnement CSS | Driver.FindElement (BY.CSSSELLECTEOR ("CSS Expression")); |
Positionnement XPATH | Driver.FindElement (by.xpath ("Expression XPath")); |
Positionnement du nom de classe | Driver.Findelement (by.className ("Class Attribut")); |
Tagname Tag Nom Cibler | Driver.Findelement (by.tagname ("TagName")); |
Méthode jQuery | Js.Executescript ("return jQuery.find (" jQuery Expression ")") |
Comment localiser
Lorsque vous utilisez le sélénium webdriver pour le positionnement des éléments, la méthode FindElement ou FindElements est généralement utilisée pour combiner la classe par classe pour retourner les poignées des éléments pour localiser les éléments
La méthode FindElement () renvoie un élément. Si cela n'est pas trouvé, une exception sera lancée.
La méthode FindElements () renvoie plusieurs éléments. Si cela n'est pas trouvé, un tableau vide sera retourné et aucune exception ne sera lancée.
Comment choisir une méthode de positionnement
La stratégie consiste à choisir une méthode de positionnement simple et stable.
1. Lorsque l'élément de page a un attribut ID, essayez d'utiliser l'ID pour le localiser. Sinon, choisissez une autre méthode de positionnement
2. CSSSeLector exécute rapidement, recommandé
3. Lorsque vous positionnez des hyperliens, vous pouvez considérer LinkText ou PartialLinkText: mais il convient de noter que le texte change souvent, il n'est donc pas recommandé de l'utiliser.
4. Xpath a la fonction la plus puissante. La vitesse d'exécution était lente à ce moment-là, car vous deviez trouver l'intégralité du DOM, alors essayez de l'utiliser le moins possible. Quand il n'y a vraiment aucun moyen, utilisez xpath
Trouver des éléments par id: by.id ()
Le moyen le plus recommandé de trouver des éléments via l'ID des éléments de la page. W3C Standard recommande aux développeurs de fournir des attributs d'ID uniques pour chaque élément de page.
Une fois qu'un élément reçoit un attribut ID unique, il est facile de localiser l'élément lorsque nous effectuons des tests automatisés. L'ID de l'élément est utilisé comme l'attribut d'identification préféré car il s'agit de la stratégie d'identification la plus rapide.
Prenant l'exemple de la page d'accueil de Baidu, l'exemple de code HTML de la zone de recherche est le suivant, son identifiant est KW
<input type = "text" AutoChatletele = "OFF" maxLength = "100" id = "kw" name = "wd">
L'exemple de code HTML pour l'élément de bouton de recherche "baidu" est le suivant, son identifiant est su
<input type = "soumi" id = "su" value = "baidu">
Java Exemple de code pour trouver des éléments par ID dans Selenium / WebDriver est le suivant
WebDriver Driver = new FireFoxdriver (); driver.get ("http://www.baidu.com"); WebElement searchbox = Driver.Findelement (by.id ("kw")); SearchBox.SendKeys ("Little Tank Blog Park"); WebElement SearchButton = Driver.Findelement (by.id ("Su")); SearchButton.Submit (); driver.close ();Trouver des éléments par nom: par.name ()
Prenant l'exemple de la zone de recherche de la page d'accueil de Douban.com, le code HTML de sa zone de recherche est le suivant, son nom est: q
<input type = "text" AutoChatletele = "OFF" name = "Q" Paceholder = "Livres, films, musique, groupes, stations, membres" size = "12" MaxLength = "60">
Le code Java dans WebDriver pour rechercher des boîtes de recherche sur la page d'accueil de Douban via le nom est la suivante:
WebDriver Driver = new FireFoxdriver (); driver.get ("http://www.douban.com"); WebElement searchbox = driver.Findelement (by.name ("q")); SearchBox.SendKeys ("Small Tank"); SearchBox.Submit ();Rechercher des éléments par tagname: by.tagname ()
Lors de la recherche d'éléments via TagName, plusieurs éléments seront retournés. Par conséquent, FindElements () est requis.
WebDriver Driver = new FireFoxdriver (); driver.get ("http://www.cnblogs.com"); List <WebElement> Buttons = Driver.Findelements (by.tagname ("div")); System.out.println ("Button:" + Buttons.Size ());Remarque: Si vous utilisez TagName, vous devez noter que le nom de tagNon de nombreux éléments HTML est le même.
Par exemple, radio, zone à cocher, zone de texte, zone de mot de passe. Ces balises d'élément sont toutes entrées. À l'heure actuelle, le nom de Tagnon ne peut pas obtenir avec précision les éléments que nous voulons. Vous devez également combiner l'attribut de type pour filtrer les éléments que nous voulons.
WebDriver Driver = new FireFoxdriver (); driver.get ("http://www.cnblogs.com"); List <WebElement> Buttons = Driver.Findelements (by.tagname ("entrée")); for (WebElement WebElement: Buttons) {if (WebElement.getAttribute ("type"). Equals ("Text")) {System.out.println ("Le texte de saisie est:" + WebElement.GetText ()); }}Trouver des éléments par classe
Prenant l'exemple de la recherche de page d'accueil de Taobao, le code HTML de sa zone de recherche est le suivant:
<entrée automatique assocle = "off" autofocus = "true" AccessKey = "s" aria-label = "Veuillez entrer le texte de la recherche" name = "q" id = "q" aria-haspopup = "tramMit-grammar =" Bustlate: Tabindex = "0" 0 ">
L'exemple de code Java est le suivant
WebDriver Driver = new FireFoxdriver (); driver.get ("http://www.taobao.com"); Thread.Sleep (15000); WebElement searchbox = Driver.Findelement (by.className ("Search-Combobox-Input")); SearchBox.SendKeys ("Down Jacket"); SearchBox.Submit (); Remarque: Lorsque vous utilisez ClassName pour localiser les éléments, vous rencontrez parfois un
Trouver des éléments par linkText by.LinkText ();
Positionner les éléments directement via des informations de texte sur l'hyperlien: par ex.
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f" name = "tj_login" onclick = "return false;"> Login </a>
Le code HTML est le suivant
WebDriver Driver = new FireFoxdriver (); driver.get ("http://www.baidu.com"); WebElement LoginLink = Driver.Findelement (par.LinkText ("Login")); LoginLink.Click ();Trouver des éléments par partialLinkText ()
Cette méthode est une version améliorée de la méthode précédente. Lorsque vous souhaitez seulement correspondre à certains mots clés, vous pouvez utiliser cette méthode pour localiser les éléments via un texte hyperlien.
Le code HTML est le suivant
WebDriver Driver = new FireFoxdriver (); driver.get ("http://www.baidu.com"); WebElement LoginLink = Driver.Findelement (by.PartialLinkText ("log")); LoginLink.Click ();Remarque: Lorsque vous utilisez cette méthode pour localiser, le problème peut être causé que lorsque vous ne savez pas qu'un hyperlien contient "etc". La méthode FindElement ne renverra que le premier élément trouvé et ne renverra pas tous les éléments qui répondent aux critères.
Si vous souhaitez obtenir tous les éléments qui répondent aux critères, vous ne pouvez utiliser que la méthode FindElements.
Ce qui précède est les informations sur le positionnement des éléments Java Selenium. Nous continuerons d'ajouter des informations pertinentes à l'avenir. Merci pour votre soutien!