handling web tables frames
Dans le dernier didacticiel Selenium WebDriver, nous avons appris divers commandes Selenium WebDriver couramment utilisées y compris des sujets importants tels que la gestion des iframe et des exceptions dans les scripts Selenium.
Aller de l'avant dans notre série de tutoriels sur Selenium , dans ce didacticiel, nous discuterons de gestion des tables Web, iframe et éléments dynamiques qui sont une partie essentielle de tout projet Web.
Ce tutoriel se compose de 3 sujets différents et de leurs mécanismes de gestion dans un script sélénium.
- Tableaux Web / tableaux HTML
- Cadres
- Éléments dynamiques
Ce que vous apprendrez:
- # 1) Tableaux Web / Tableaux HTML
- # 2) Cadres
- # 3) Éléments dynamiques
- Conclusion
- lecture recommandée
# 1) Tableaux Web / Tableaux HTML
Dans ce module, nous allons découvrir les tableaux Web ou les tableaux HTML d'une page Web, les balises disponibles en HTML et comment gérer les tableaux Web de manière dynamique.
Les tableaux Web sont essentiellement un groupe d'éléments qui sont logiquement stockés dans un format de ligne et de colonne. Il est utilisé pour organiser des informations similaires sur une page Web.
Voici un exemple de table Html:
Vous trouverez ci-dessous l'extrait de la structure HTML d'un tableau HTML:
Les balises ci-dessous sont généralement définies dans les tableaux html:
La balise 'table' définit le tableau HTML.
2. La balise 'tbody' définit un conteneur pour les lignes et les colonnes.
3.’tr ’définit les lignes d’un tableau HTML.
4. 'td' / 'th' définissent la colonne d'un tableau HTML.
Trouvez les détails d'un tableau Web:
Il existe de nombreuses façons de gérer une table Web.
comment puis-je ouvrir un fichier eps
Approche n ° 1 :
Vous trouverez ci-dessous le xpath de l'une des cellules du tableau html. Disons 'prénom'
// div (@ id = ’main’) / table (1) / tbody / tr (1) / th (1)
tr (1) définit la première ligne et th (1) définit la première colonne.
Si un nombre de lignes et de colonnes est toujours constant, supposons que notre tableau HTML contiendra toujours 5 lignes et 3 colonnes.
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
À l'exception du numéro de ligne et de colonne, chaque composant de XPath reste le même. Ainsi, vous pouvez itérer en utilisant «pour la boucle» pour chaque ligne et colonne comme mentionné ci-dessus.
Approche # 2 :
La première approche est la mieux adaptée au tableau qui ne change pas ses dimensions et reste toujours le même. L'approche ci-dessus ne sera pas une solution parfaite pour modifier dynamiquement les tables Web.
Prenons l'exemple du tableau HTML ci-dessus:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Étape 1 : Commencez par récupérer l'intégralité du tableau HTML et stockez-le dans une variable «htmltable» de type élément Web.
Étape 2 : Obtenez toutes les lignes avec le nom de balise «tr» et stockez tous les éléments dans une liste d'éléments Web. Désormais, tous les éléments avec la balise «tr» sont stockés dans la liste «rows».
Étape 3 : Parcourez chaque ligne et obtenez la liste des éléments avec une balise 'e'. 'Rows.get (0)' donnera la première ligne et «FindElements (By.tagName ( 'e' )) ' donnera la liste des colonnes pour la ligne.
Étape 4 : Itérer en utilisant «Columns.getsize ()» et obtenez les détails de chaque cellule.
Noter : L'approche ci-dessus conviendra le mieux si les dimensions de la table changent dynamiquement.
Ceci conclut la rubrique sur la manière de gérer les tables Web en sélénium. Ensuite, nous allons apprendre à gérer un élément à l'intérieur d'un cadre.
# 2) Cadres
Dans cette section, nous allons découvrir les cadres d'une page Web et comment identifier les cadres. Nous découvrirons également comment gérer un cadre dans Selenium WebDriver.
De nombreux développeurs aiment placer des éléments dans un cadre. Le cadre est comme un conteneur où peu d'éléments peuvent être regroupés.
Identification d'un cadre:
Différentes façons de savoir si l'élément est présent à l'intérieur d'un cadre ou non
#1 . Faites un clic droit sur l'élément. Vérifiez si l'option «Ce cadre» est disponible. Si cette option de cadre est disponible, cela signifie que l'élément est à l'intérieur d'un cadre.
#deux . Affichez la source de la page Web et vérifiez si une balise est disponible pour «iframe».
qu'est-ce qu'un bon téléchargeur mp3 pour android

Vérifier le nombre de cadres dans une page Web :
Tous les cadres ont le nom de balise «iframe».
Liste frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
Dans l'exemple ci-dessus : frameList aura toute la liste des cadres et frameList.size () donnera le nombre d'images.
Manipulation d'un élément à l'intérieur du cadre:
Si un élément est à l'intérieur d'un cadre, la commande doit d'abord passer au cadre, puis commencer à fonctionner sur les éléments.
Étape 1 : Pour basculer à l'intérieur d'un cadre:
driver.switchTo (). frame (1); // passe le numéro de trame comme paramètre.
ou
driver.switchTo (). frame («Nom du cadre»); // passe le nom du cadre en paramètre.
ou
driver.switchTo (). frame («xpath of the frame»);
Étape 2 : Après avoir basculé à l'intérieur d'un cadre, le sélénium pourra fonctionner sur des éléments.
driver.findElement ( // **********************************************);
driver.findElement ( // *********************************************);
Ici, nous avons appris à gérer un élément à l'intérieur du cadre et nous aborderons ensuite les différentes façons de gérer un élément dynamique.
# 3) Éléments dynamiques
Dans cette section, nous allons apprendre différentes manières de gérer un élément dynamique et de construire un Xpath générique.
Dans quelques scénarios, les attributs des éléments changent de manière dynamique. Cela peut être 'id', 'nom', etc.
Exemple : disons que 'id' d'un champ de nom d'utilisateur est 'username_123' et que XPath sera
// * (@ id = ’username_123 ′) mais lorsque vous ouvrez à nouveau la page, le champ «id» du «nom d’utilisateur» peut avoir changé et la nouvelle valeur peut être «nom d’utilisateur_234».
Dans ce cas, le test échouera car le sélénium n'a pas pu trouver le XPath que vous avez passé précédemment car l'ID du champ a changé pour une autre valeur.
Il existe de nombreuses approches selon le type de problème:
Type de problème 1: Si une partie de la valeur d'attribut change .
Exemple : Comme dans l'exemple ci-dessus, la valeur de l'id change mais peu de champs restent constants.
'Username_123' a été remplacé par 'username_234', mais 'username' est toujours resté constant.
Vous pouvez construire xpath comme ci-dessous:
driver.findElement (Par.xpath ( '// * (contient (@ id,’ nom d’utilisateur ’))» )). sendKeys ( 'Nom d'utilisateur' );
chauffeur . findElement (Par.xpath ( '// * (commence par (@ id, 'utilisateur'))' )). sendKeys ( 'Nom d'utilisateur' );
«Contient» est une méthode java qui vérifie si id contient le nom d'utilisateur de la sous-chaîne.
commence avec() vérifie si un attribut commence par «utilisateur».
Problème de type 2: Si la valeur entière de l'attribut change dynamiquement.
Encore une fois, dans ce cas, il pourrait y avoir différentes approches:
Par exemple : si l'ID du champ «login» change dynamiquement et qu'il n'y a pas de valeur constante à utiliser contient la méthode.
Solution : Utilisation de sendKeys.
Selenium fournit différentes API pour utiliser les touches de fonction. Par exemple, touche de tabulation, entrez les touches, F5, etc.
Étape 1 : Entrer le mot de passe
driver.findElement (Par.id ( 'le mot de passe' )). sendKeys («mot de passe»));
soapui entretien questions et réponses pdf
Étape 2 : Utilisez les fonctions clés pour accéder à l'élément.
driver.findElement (Par.id ( 'le mot de passe' )). sendKeys (Clés. ENTRER ));
ou
driver.findElement (Par.id ( 'le mot de passe' )). sendKeys (Clés. LANGUETTE ));
Conclusion
Les tableaux Web, les cadres et les éléments dynamiques sont des éléments essentiels de tout projet Web. Il est toujours souhaitable d'écrire un code efficace pour gérer les tables Web et les éléments dynamiques.
Comprendre la construction de XPath générique, ce qui est très utile lors de la gestion des éléments dynamiques. Dans le cas d'un cadre, votre script doit changer de cadre puis opérer sur l'élément.
Tutoriel suivant # 19 : Dans le prochain tutoriel Selenium, nous allons apprendre à propos des types d'exceptions et comment gérer les exceptions en java dans les scripts Selenium.
Veuillez poster vos requêtes relatives aux tables Web, aux cadres et à la gestion des éléments dynamiques si vous en avez.
lecture recommandée
- Comment localiser des éléments dans les navigateurs Chrome et IE pour créer des scripts Selenium - Tutoriel Selenium # 7
- Utilisation de la classe Selenium Select pour la gestion des éléments déroulants sur une page Web - Tutoriel Selenium # 13
- Localisateurs de sélénium: identifier les éléments Web à l'aide de XPath dans Selenium (exemples)
- Comment utiliser le sélecteur CSS pour identifier les éléments Web pour les scripts Selenium - Tutoriel Selenium # 6
- Vérifier la visibilité des éléments Web à l'aide de divers types Commandes WebDriver - Tutoriel Selenium # 14
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- Intégration de Selenium avec JMeter
- Gestion des iFrames à l'aide de la méthode Selenium WebDriver switchTo ()