How Can We Help?
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);
}
}