efficient selenium scripting
Dans le tutoriel précédent, nous avons discuté des implications techniques lors de la mise en œuvre de la journalisation dans un cadre . Nous avons discuté utilitaire log4j enfin. Nous avons discuté des composants de base qui constituent log4j du point de vue de la convivialité. Avec les Appenders et les mises en page, un utilisateur est mis à profit pour choisir le format / modèle de journalisation souhaité et la source / l'emplacement des données.
Dans le 27e didacticiel actuel de ce série complète de formations en ligne gratuites sur le sélénium , nous nous concentrerions sur quelques triviaux sujets pourtant importants cela nous guiderait pour résoudre certains problèmes récurrents. Nous pouvons ou non les utiliser dans les scripts quotidiens, mais ils seraient utiles à long terme.
Nous serions discuter de certains concepts avancés dans lesquels nous traiterions des événements de souris et de clavier, en accédant à plusieurs liens en implémentant des listes . Alors pourquoi ne pas commencer et discuter brièvement de ces sujets à l'aide de scénarios et d'extraits de code appropriés.
Questions et réponses d'entretien ado.net pour les expérimentés
Ce que vous apprendrez:
- Exécuteurs JavaScript
- Accéder à plusieurs éléments dans une liste
- Gestion des événements du clavier et de la souris
- Conclusion
- lecture recommandée
Exécuteurs JavaScript
Lors de l'automatisation d'un scénario de test, certaines actions deviennent partie intégrante des scripts de test.
Ces actions peuvent être:
- Cliquer sur un bouton, un lien hypertexte, etc.
- Taper dans une zone de texte
- Défilement vertical ou horizontal jusqu'à ce que l'objet souhaité soit visible
- Et beaucoup plus
Maintenant, il ressort clairement des didacticiels précédents que la meilleure façon d'automatiser de telles actions consiste à utiliser les commandes Selenium.
Mais que faire si les commandes sélénium ne fonctionnent pas?
Oui, il est tout à fait possible que les commandes Selenium très basiques et élémentaires ne fonctionnent pas dans certaines situations.
Cela dit, pour pouvoir résoudre une telle situation, nous épaulons les exécuteurs JavaScript dans l'image.
Que sont les exécuteurs JavaScript?
L'interface JavascriptExecutor fait partie de org.openqa.selenium et implémente la classe java.lang.Object. JavascriptExecutor présente les capacités d'exécuter JavaScript directement dans le navigateur Web. Pour pouvoir exécuter le JavaScript, certains mécanismes sous forme de méthodes ainsi qu'un ensemble spécifique de paramètres sont fournis dans son implémentation.
Méthodes
executeScript (script de chaîne, args)
Comme le nom de la méthode l'indique, il exécute le JavaScript dans la fenêtre, l'alerte, le cadre, etc. en cours (la fenêtre sur laquelle l'instance WebDriver se concentre actuellement)
executeAsyncScript (script de chaîne, args)
différence entre les tests de charge et de performance
Comme le nom de la méthode l'indique, il exécute le JavaScript dans la fenêtre, l'alerte, le cadre, etc. en cours (la fenêtre sur laquelle l'instance WebDriver se concentre actuellement)
Les paramètres et l'instruction d'importation sont communs aux deux méthodes de l'exécuteur.
Paramètres
Script - le script à exécuter
Argument - les paramètres dont le script a besoin pour son exécution (le cas échéant)
Déclaration d'importation
Pour pouvoir utiliser JavascriptExecutors dans nos scripts de test, nous devons importer le package en utilisant la syntaxe suivante:
import org.openqa.selenium.JavascriptExecutor;
Exemple de code
# 1) Cliquer sur un élément Web
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) Taper dans une zone de texte
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Faire défiler vers le bas jusqu'à ce que l'élément Web soit dans la vue
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
Vous pouvez trouver diverses autres façons d'écrire le code pour accéder à JavascriptExecutors.
Accéder à plusieurs éléments dans une liste
Parfois, nous pouvons rencontrer des éléments du même type comme plusieurs hyperliens, images, etc. disposés dans une liste ordonnée ou non ordonnée. Ainsi, il est absolument logique de traiter de tels éléments par un seul morceau de code et cela peut être fait à l'aide de WebElement List. Reportez-vous à la capture d'écran ci-dessous pour comprendre les éléments dont je parle.
Dans l'image ci-dessus, nous voyons que les différents fournisseurs de services appartiennent à une liste non ordonnée. Ainsi, la vérification de la cliquabilité et de la visibilité de ces éléments peut se faire par un seul morceau de code en utilisant une liste d'éléments.
Déclaration d'importation
Pour pouvoir utiliser une liste WebElement dans nos scripts de test, nous devons importer le package en utilisant la syntaxe suivante:
import java.util.List;
Exemple de code
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iIl existe diverses exigences selon lesquelles les listes peuvent être utilisées pour vérifier les éléments avec des changements d'implémentation appropriés.
Gestion des événements du clavier et de la souris
Gestion des événements de clavier
Comme indiqué précédemment, il existe n nombre de façons de traiter le même énoncé de problème dans différents contextes.
Ainsi, il est parfois nécessaire de traiter un problème en changeant la stratégie conventionnelle de traitement par une stratégie plus avancée. J'ai été témoin de cas où je ne pouvais pas gérer les alertes et les fenêtres contextuelles, etc. par des commandes au sélénium, j'ai donc dû opter pour différents utilitaires java pour le gérer en utilisant des frappes de clavier et des événements de souris.
La classe Robot est l'une de ces options pour effectuer des événements de clavier et des événements de souris.
Comprenons le concept à l'aide d'un scénario et sa mise en œuvre.
Scénario:
Prenons une situation où une fenêtre contextuelle inutile apparaît à l'écran qui ne peut pas être acceptée ou rejetée à l'aide de l'interface d'alerte, donc la seule option judicieuse qui nous reste est de fermer la fenêtre à l'aide des touches de raccourci - «Alt + barre d'espace + C» . Voyons comment nous fermons le popup en utilisant Robot Class.
Avant de lancer l'implémentation, nous devons importer le package nécessaire pour pouvoir utiliser la classe Robot dans notre script de test.
Déclaration d'importation
import java.awt.Robot;
Exemple de code
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
La classe Robot peut également être utilisée pour gérer les événements de souris, mais examinons ici les capacités du sélénium à gérer les événements de souris.
Gestion des événements de souris
WebDriver propose une large gamme d'utilitaires d'interaction que l'utilisateur peut exploiter pour automatiser les événements de la souris et du clavier. L'interface d'action est l'un de ces utilitaires qui simule les interactions d'un seul utilisateur.
Ainsi, nous assisterions à l'interface d'action au survol de la souris sur une liste déroulante qui ouvre ensuite une liste d'options dans le scénario suivant.
Scénario:
- Survolez la souris dans la liste déroulante
- Cliquez sur l'un des éléments dans les options de la liste
Déclaration d'importation
import org.openqa.selenium.interactions.Actions;
Exemple de code
meilleur logiciel pour compresser des fichiers vidéo
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Conclusion
Dans ce didacticiel, nous avons abordé certaines rubriques avancées liées à la création de scripts efficaces et au dépannage de scénarios dans lesquels l'utilisateur doit gérer les événements de la souris et du clavier. Nous avons également expliqué comment stocker plusieurs éléments Web dans une liste. J'espère que vous pourrez résoudre ces obstacles si vous en rencontrez.
Tutoriel suivant # 28 : Pour le prochain tutoriel de la série, nous discuterons du concept de test de base de données à l'aide de Selenium WebDriver . Nous assisterions au mécanisme de connexion à la base de données, en frappant les requêtes de sélénium et en récupérant les résultats via Selenium WebDriver Code.
lecture recommandée
- Introduction à Selenium WebDriver - Tutoriel Selenium # 8
- Débogage de scripts Selenium avec des journaux (Tutoriel Log4j) - Tutoriel Selenium # 26
- 30+ meilleurs didacticiels sur le sélénium: apprenez le sélénium avec de vrais exemples
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- Comment localiser des éléments dans les navigateurs Chrome et IE pour créer des scripts Selenium - Tutoriel Selenium # 7
- Implémentation de notre premier script WebDriver - Tutoriel Selenium WebDriver # 10
- Configuration et installation complètes de WebDriver avec Eclipse - Tutoriel Selenium # 9
- Création de génériques et de suites de tests - Tutoriel Selenium # 22