138 votes

WebDriver: obtenez le code de réponse HTTP

J'écris des tests avec Selenium2 / WebDriver et je veux vérifier si une requête HTTP renvoie un HTTP 403 interdit.

Est-il possible d'obtenir le code d'état de la réponse http avec le pilote Web?

80voto

JimEvans Points 9709

En un mot, non, il n'est pas possible d'utiliser l'API Selenium WebDriver. Cela a été discuté ad nauseum dans le suivi des problèmes pour le projet et la fonctionnalité ne sera pas ajoutée à l'API.

17voto

Chris Points 312

Vous pouvez utiliser le proxy BrowserMob pour capturer les demandes et les réponses avec HttpRequestInterceptor . Voici un exemple en Java:

 // Start the BrowserMob proxy
ProxyServer server = new ProxyServer(9978);
server.start();

server.addResponseInterceptor(new HttpResponseInterceptor()
{
    @Override
    public void process(HttpResponse response, HttpContext context)
        throws HttpException, IOException
    {
        System.out.println(response.getStatusLine());
    }
});

// Get selenium proxy
Proxy proxy = server.seleniumProxy();

// Configure desired capability for using proxy server with WebDriver
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);

// Set up driver
WebDriver driver = new FirefoxDriver(capabilities);

driver.get("http://stackoverflow.com/questions/6509628/webdriver-get-http-response-code");

// Close the browser
driver.quit();
 

8voto

Je ne suis pas sûr que ce soit ce que vous recherchez, mais mon objectif est un peu différent: vérifier si l'image distante existe et je n'aurai pas d'erreur 403; vous pouvez donc utiliser le même principe que ci-dessous:

 public static boolean linkExists(String URLName){
    try {
        HttpURLConnection.setFollowRedirects(false);
        HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
        con.setRequestMethod("HEAD");
        return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X