< All Topics

Integration with selenium

Integration with Java and selenium is straight forward. All you need to do is capture the screenshot in Base64 format and send a Post request as mentioned here .

The below code use rest- assured to make the API calls, however any library that supports API calls can be used.

import java.io.IOException;
import org.json.simple.JSONObject;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.Dimension;


public class google {

	static WebDriver driver;

	public static void main(String args[]) throws Exception {
		System.setProperty("webdriver.chrome.driver", "C:\\Users\\selenium\\chromedriver.exe");
		driver = new ChromeDriver();
		driver.get("https://www.google.com/");
		driver.manage().window().setSize(new Dimension(1024, 768));
		String scrBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);
		String uid = getUID("Google Home", "fca709ea-d527-4f30-abc2-fa7e2af8afaf");
		postRequest("Step 1", uid, scrBase64);
		driver.quit();
	}



	public static String getUID(String testName, String projectKey) {
		try {
			RequestSpecification request = RestAssured.given();
			request.header("content-type", "application/json");
			JSONObject json = new JSONObject();
			json.put("TestName", testName);
			json.put("ProjectKey", projectKey);
			request.body(json.toJSONString());
			Response response = request.when().post("http://192.168.10.13:90/api/GetUID");
			int code = response.getStatusCode();
			String response_id = response.getBody().asString();
			System.out.println("Response id:" + response_id);
			return response_id;
		} catch (Exception ex) {
			return ex.toString();
		}
	}

	public static void postRequest(String stepNam, String uid, String imagebase64) throws IOException {
		RequestSpecification request1 = RestAssured.given();
		request1.header("content-type", "application/json");
		JSONObject jo = new JSONObject();
		jo.put("TestRunID", uid.replace("\"", ""));
		jo.put("StepName", stepNam);
		jo.put("ImageBase64", imagebase64);
		System.out.println("imagebase64:" + imagebase64);
		request1.body(jo.toJSONString());
		Response response1 = request1.when().post("http://192.168.10.13:90/api/Validate");
		String response_id1 = response1.getBody().asString();
		System.out.println("response id1:" + response_id1);
	}

}

To take the full page screenshot, libraries like Ashot or Shutterbug can be used.

Images used should be of same resolution. You can fix the resolution as : driver.manage().window().setSize(new Dimension(1024, 768));

For the first run it will create the baseline. Any subsequent runs will be compared against baseline.