Salut à tous,
Aujourd'hui, je veux partager avec vous une introduction pratique aux tests d'applications Web avec Selenium WebDriver. Nous allons voir ensemble comment écrire un script de test simple en Java, en utilisant deux mini-projets que j'ai récemment réalisés.
Avant de commencer à écrire notre script de test, nous devons préparer notre environnement de développement. Voici ce dont nous avons besoin:
Java JDK : Assurez-vous d'avoir installé Java Development Kit(JDK).
IntelliJ IDEA : Nous utiliserons IntelliJ IDEA comme IDE.
3.Selenium WebDriver : Nous ajouterons les librairies dans le projet.
Google chrome : Nous utiliserons le navigateur Google Chrome.
ChromeDriver : Nous aurons besoins de télécharger le driver de chrome compatible avec votre version de Google Chrome.
Aller sur le site officielle de Selenium WebDriver en cliquant sur ce lien https://www.selenium.dev/downloads/.
Faites défiler jusqu'à la section Selenium Clients and WebDriver Language Bindings et téléchargez le client Selenium WebDriver Java. Le téléchargement est un fichier ZIP contenant des bibliothèques et des pilotes Selenium Java.
Aller sur le site https://sites.google.com/chromium.org/driver/downloads, lisez le contenu pour savoir quelle version de chromeDriver télécharger en fonction de la version de votre navigateur Google Chrome.
Créer un nouveau projet Java avec Maven dans IntelliJ IDEA, dans notre cas nous l'appellerons SeleniumTestLogiciels.
Extrayez le fichier ZIP téléchargé dans un dossier sur votre ordinateur.
Dans IntelliJ IDEA, cliquer sur File > Project Structure.
Dans la fenêtre Project Structure, cliquer sur Libraries.
Dans fenêtre Libraries, à droite cliquer sur l'icone + pour (New Project Library), choisissez ensuite Java.
Dans la fenêtre Select Library Files, accédez au dossier où vous avez extrait Selenium WebDriver et sélectionnez tous les fichiers qui s'y trouvent.
Cliquez sur Apply, puis sur Close.
Créons un script de test simple pour vérifier que Selenium WebDriver a été bien installé correctement.
Créez une nouvelle classe nommée NewsletterSignUpTest
Dans le fichier de classe nouvellement crée, écrivez un simple test Selenium WebDriver. Voici un exemple de script qui ouvre l'un de mes projets frontend dans un navigateur Web.
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class NewsletterSignUpTest { public static void main(String[] args) throws InterruptedException { // Setup WebDriver System.setProperty("webdriver.chrome.driver","C:\\Selenium WebDriver Chrome\\chromedriver-win64\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // Navigate to the page driver.get("https://time-tracking-dashboard-challenge-sooty.vercel.app/"); // Maximize the browser window driver.manage().window().fullscreen(); // Wait for 4 seconds before closing the browser Thread.sleep(6000); //close the browser driver.quit(); } }
Ci-dessous le code de la classe NewsletterSignUpTest précédemment créée :
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.logging.Level; import java.util.logging.Logger; public class NewsletterSignUpTest { public static void main(String[] args){ // Initialize logger for logging test results final Logger LOGGER = Logger.getLogger(NewsletterSignUpTest.class.getName()); // Setup WebDriver System.setProperty("webdriver.chrome.driver","C:\\Selenium WebDriver Chrome\\chromedriver-win64\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); try { // Navigate to the page driver.get("https://newsletter-sign-up-with-success-message-challenge-tau.vercel.app/"); // Maximize the browser window driver.manage().window().fullscreen(); // Wait for 5 seconds to observe the initial state Thread.sleep(5000); // Find the email input field and submit button WebElement emailInput = driver.findElement(By.id("email")); WebElement submitButton = driver.findElement(By.id("btnSubmit")); // Test invalid email submission emailInput.sendKeys("invalid-email"); submitButton.click(); // Wait for 4 seconds to observe the error message Thread.sleep(4000); // Verify the error message is displayed WebElement errorEmailMessage = driver.findElement(By.id("error-email")); String errorMessage = errorEmailMessage.getText(); if ("Email is not in a valid format".equals(errorMessage)) { LOGGER.info("Invalid email test passed!"); } else { LOGGER.severe("Invalid email test failed! Error message: " + errorMessage); } // Test valid email submission emailInput.clear(); emailInput.sendKeys("validemail@example.com"); submitButton.click(); // Wait for 4 seconds to observe the success message Thread.sleep(4000); // Verify the success message is displayed WebElement successMessage = driver.findElement(By.id("card-success-message")); if (successMessage.isDisplayed()) { LOGGER.info("Valid email test passed!"); } else { LOGGER.severe("Valid email test failed!"); } // Verify the success email is correct WebElement successEmail = driver.findElement(By.id("user-email")); String displayedEmail = successEmail.getText(); if ("validemail@example.com".equals(displayedEmail)) { LOGGER.info("Success email test passed!"); } else { LOGGER.severe("Success email test failed! Displayed email: " + displayedEmail); } // Test dismissing the success message WebElement dismissButton = driver.findElement(By.id("btnDismissMessage")); dismissButton.click(); // Wait for 4 seconds to observe the state after dismissing the success message Thread.sleep(4000); // Verify the sign-up form is displayed again WebElement signUpForm = driver.findElement(By.id("card-sign-up")); if (signUpForm.isDisplayed()) { LOGGER.info("Dismiss message test passed!"); } else { LOGGER.severe("Dismiss message test failed!"); } // Wait for 6 seconds before closing the browser Thread.sleep(6000); } catch (InterruptedException e) { // Log interrupted exception LOGGER.log(Level.SEVERE, "Interrupted exception occurred", e); } finally { // Close the browser driver.quit(); } } }
Pour mieux comprendre le fonctionnement du script de test Selenium WebDriver pour le formulaire d'inscription à la newsletter, nous allons examiner chaque partie du code et expliquer son rôle.
Initialisation du WebDriver et Configuration
// Configuration du WebDriver System.setProperty("webdriver.chrome.driver", "C:\\Selenium WebDriver Chrome\\chromedriver-win64\\chromedriver.exe"); WebDriver driver = new ChromeDriver();
Cette partie du code initialise et configure le WebDriver pour utiliser ChromeDriver.
java System.setProperty définit le chemin vers l'exécutable de ChromeDriver sur votre machine.
WebDriver driver = new ChromeDriver(); crée une nouvelle instance de ChromeDriver, qui est utilisée pour interagir avec le navigateur Chrome.
Bloc Try-Catch
try { // Code de test Selenium } catch (InterruptedException e) { // Gestion des exceptions d'interruption LOGGER.log(Level.SEVERE, "Exception d'interruption survenue", e); } catch (Exception e) { // Gestion des autres exceptions imprévues LOGGER.log(Level.SEVERE, "Une exception imprévue est survenue", e); } finally { // Fermeture du navigateur à la fin du test driver.quit(); }
Le bloc try-catch entoure le code de test Selenium. Il capture et gère les exceptions qui peuvent survenir pendant l'exécution du test.
InterruptedException est spécifiquement géré pour les interruptions lors de l'utilisation de Thread.sleep(), tandis que Exception gère toutes les autres exceptions imprévues.
Le bloc finally garantit que le navigateur est fermé driver.quit() à la fin du test, quelle que soit l'issue.
Navigation et Interaction avec les Éléments de la Page
// Navigation vers la page du formulaire driver.get("https://newsletter-sign-up-with-success-message-challenge-tau.vercel.app/"); // Maximisation de la fenêtre du navigateur driver.manage().window().fullscreen();
driver.get() navigue vers l'URL spécifiée où se trouve le formulaire d'inscription à la newsletter.
driver.manage().window().fullscreen() maximise la fenêtre du navigateur pour une meilleure visibilité et interaction pendant les tests.
Interaction avec les Éléments de la Page
// Recherche des éléments de page WebElement emailInput = driver.findElement(By.id("email")); WebElement submitButton = driver.findElement(By.id("btnSubmit"));
Soumission d'Email Invalide
// Soumission d'e-mail invalide emailInput.sendKeys("invalid-email"); submitButton.click();
emailInput.sendKeys("invalid-email") entre un e-mail invalide dans le champ d'e-mail.
submitButton.click() clique sur le bouton Soumettre pour soumettre le formulaire avec l'e-mail invalide.
Vérification des Messages
// Vérification de l'affichage du message d'erreur WebElement errorEmailMessage = driver.findElement(By.id("error-email")); String errorMessage = errorEmailMessage.getText(); if ("Email is not in a valid format".equals(errorMessage)) { LOGGER.info("Test d'e-mail invalide réussi !"); } else { LOGGER.severe("Échec du test d'e-mail invalide ! Message d'erreur : " + errorMessage); }
driver.findElement(By.id("error-email")) trouve l'élément de page qui affiche le message d'erreur pour un e-mail invalide.
errorEmailMessage.getText() récupère le texte du message d'erreur. Le test vérifie si le message d'erreur attendu est affiché et enregistre le résultat dans les logs.
Pour plus de pratique, voici le projet GitHub qui contient les scripts de tests pour les mini-projets écrit en JavaScript.
Formulaire d'inscription à la newsletter avec message de réussite.
Tableau de bord de suivi du temps.
Selinium_WebDriver_TestLogiciels_GitHub_Repository
NB : Lisez le fichier README.md pour les détails sur ce projet.
The above is the detailed content of Practical introduction to web application testing with Selenium WebDriver and Java.. For more information, please follow other related articles on the PHP Chinese website!