< All Topics

Just like selenium, Integration of Imagium with Appium is extremely simple. All you need to do is capture the screenshot in Base64 format and send a Post request as mentioned here .

package Appium.copy;

import java.io.IOException;
import java.net.URL;
import org.json.simple.JSONObject;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;


public class AirCanada {

	static WebDriver driver;
	static int linkcount = 0; 
	static String uid = "";

	public static void main(String args[]) throws Exception
	{
		
		//Set up desired capabilities and pass the Android app-activity and app-package to Appium
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability("BROWSER_NAME", "Android");
		capabilities.setCapability("VERSION", "9.0"); 
		capabilities.setCapability("deviceName","test2");
		capabilities.setCapability("platformName","Android");
		capabilities.setCapability("appPackage", "com.android.calculator2");		
		capabilities.setCapability("appActivity","com.android.calculator2.Calculator"); 
	//Create RemoteWebDriver instance and connect to the Appium server
	 //It will launch the Calculator App in Android Device using the configurations specified in Desired Capabilities
	   driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
		
	   
	   //Get unique ID for test case
	   String uid = getUID("Appium Calculator", "6ba4e61f-44c8-4543-b72a-c049bf306f61");
	   String scrBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);
	   postRequest("Step 1", uid, scrBase64);
		
		//Screenshot for step 2
		driver.findElement(By.xpath("//*[@text='2']")).click();
		Thread.sleep(1000);
		scrBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);
		postRequest("Step 2", uid, scrBase64);

	}
	
	//Get unique Test ID for a specific project using Rest Assured 
	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.2.13:90/api/GetUID");
			int code = response.getStatusCode();
			String response_id = response.getBody().asString();
			System.out.println("TestID: " + response_id);
			return response_id;
		} catch (Exception ex) {
			return ex.toString();
		}
	}

	//Post a request for validation
	public static void postRequest(String stepName, 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", stepName);
		jo.put("ImageBase64", imagebase64);
		System.out.println("imagebase64:" + imagebase64);
		request1.body(jo.toJSONString());
		Response response1 = request1.when().post("http://192.168.2.13:90/api/Validate");
		String response_id1 = response1.getBody().asString();
		System.out.println("Response: " + response_id1);
	}


}

Previous 4. Multipage validations | Java & Selenium
Next 6. Automatic Test Creation (Web Crawlers)
Table of Contents