Maison >Java >javaDidacticiel >Comment gérer les fenêtres contextuelles d'authentification dans Selenium WebDriver à l'aide de Java ?

Comment gérer les fenêtres contextuelles d'authentification dans Selenium WebDriver à l'aide de Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-10 02:16:09639parcourir

How to Handle Authentication Pop-ups in Selenium WebDriver Using Java?

Gérer la fenêtre contextuelle d'authentification avec Selenium WebDriver à l'aide de Java

Dans Selenium WebDriver, la navigation vers une page qui nécessite une authentification déclenche souvent une fenêtre contextuelle . Cependant, le code fourni dans la question affiche toujours la fenêtre contextuelle d'authentification même après que l'utilisateur a saisi les informations d'identification correctes. Cela peut être frustrant et entraver les efforts d'automatisation.

La solution réside dans l'utilisation de la méthode AuthenticateUsing() de la classe Alert. Cette méthode vous permet de contourner la fenêtre contextuelle d'authentification HTTP de base et d'authentifier automatiquement l'utilisateur. Voici le code modifié :

import org.openqa.selenium.Alert;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class EnhancedAuthenticationHandling {

    public static void main(String[] args) {
        // Set up Firefox profile to accept long username and password
        FirefoxProfile profile = new FirefoxProfile();
        profile.setPreference("network.http.phishy-userpass-length", 255);
        profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "x.x.x.x");

        // Create FirefoxDriver with the modified profile
        WebDriver driver = new FirefoxDriver(profile);

        // Navigate to the protected page
        String login = "username";
        String password = "password";
        String url = "http://protectedpage.com";
        String baseUrl = "http://" + login + ":" + password + "@" + url;
        driver.get(baseUrl + "/");

        // Wait for authentication alert to appear
        WebDriverWait wait = new WebDriverWait(driver, 10);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());

        // Authenticate using the provided credentials
        alert.authenticateUsing(new UserAndPassword(login, password));
       
    }
}

Dans ce code mis à jour, la méthode AuthenticateUsing() est appelée avec le nom d'utilisateur et le mot de passe corrects. Cela devrait automatiquement authentifier l'utilisateur et fermer la fenêtre contextuelle, permettant ainsi à la page de se charger avec succès.

Remarque :

  • La méthode AuthenticateUsing() n'est prise en charge que dans Selenium WebDriver versions 3.4 et supérieures, et il est toujours considéré comme une fonctionnalité bêta.
  • Actuellement, ce n'est que implémenté pour InternetExplorerDriver.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn