Hur får jag svarstatuskod med Selenium WebDriver

Ganska ofta när du kör automatiska kontroller med Selenium WebDriver vill du också kontrollera svarsstatuskoden för en resurs, till exempel en webbtjänst eller andra webbsidor på webbplatsen. Du kan också söka efter trasiga länkar på webbplatsen när du kör Selenium WebDriver-skript.

Låt oss granska de olika HTTP-statuskoderna:

2xx - OK
3xx - omdirigering
4xx - Resurs hittades inte
5xx - Serverfel


I Selenium WebDriver finns det ingen direkt metod för att kontrollera svarsstatuskoden, så vi måste använda ett annat bibliotek för detta. Vi kan använda Apache HttpClient eller jag föredrar att använda REST-försäkrat bibliotek från Jayway

För att få svarskoden med REST-säker kan vi använda:


import io.restassured.RestAssured; public class HttpResponseCode {
public int httpResponseCodeViaGet(String url) {

return RestAssured.get(url).statusCode();
}
public int httpResponseCodeViaPost(String url) {
return RestAssured.post(url).statusCode();
}
public static void main(String args[]) {
new HttpResponseCode().httpResponseCodeViaGet('http://www.google.com');
} }

Produktion:

200

För att söka efter trasiga länkar på sidan när Selenium WebDriver-tester utförs kan vi använda:

import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.List; public class HttpResponseCode {
WebDriver driver;
int statusCode
public void checkBrokenLinks() {
driver = new FirefoxDriver();
driver.get('https://devqa.io');

//Get all the links on the page
List links = driver.findElements(By.cssSelector('a'));

String href;

for(WebElement link : links) {

href = link.getAttribute('href');

statusCode = new HttpResponseCode().httpResponseCodeViaGet(href);

if(200 != statusCode) {


System.out.println(href + ' gave a response code of ' + statusCode);

}
}
}
public static void main(String args[]) {
new HttpResponseCode().checkBrokenLinks();
} }

Vidare läsning: