Skip to content
This repository was archived by the owner on Dec 7, 2020. It is now read-only.

Commit 5f2485a

Browse files
author
Severi Haverila
committed
use enum for platformType
1 parent af846a2 commit 5f2485a

File tree

7 files changed

+69
-48
lines changed

7 files changed

+69
-48
lines changed

src/main/java/AbstractAppiumTest.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import org.slf4j.Logger;
1111
import org.slf4j.LoggerFactory;
1212

13+
import dtos.PlatformType;
14+
1315
import java.io.BufferedReader;
1416
import java.io.File;
1517
import java.io.IOException;
@@ -35,7 +37,7 @@ public abstract class AbstractAppiumTest {
3537

3638
public static String screenshotsFolder = "";
3739
public static String appFile = System.getenv("APP_FILE");
38-
public static String platformName = System.getenv("PLATFORM_NAME");
40+
public static PlatformType platform;
3941
public static String automationName = System.getenv("AUTOMATION_NAME");
4042
public static String deviceName = System.getenv("DEVICE_NAME");
4143
public static String udid = System.getenv("UDID");
@@ -49,8 +51,8 @@ public static AppiumDriver getIOSDriver() throws Exception {
4951
if (appFile == null) {
5052
appFile = "application.ipa";
5153
}
52-
if (platformName == null) {
53-
platformName = "iOS";
54+
if (platform == null) {
55+
platform = PlatformType.IOS;
5456
}
5557
if (deviceName == null){
5658
deviceName = "device";
@@ -66,7 +68,7 @@ public static AppiumDriver getIOSDriver() throws Exception {
6668
dir.mkdirs();
6769

6870
DesiredCapabilities capabilities = new DesiredCapabilities();
69-
capabilities.setCapability("platformName", platformName);
71+
capabilities.setCapability("platformName", platform.getPlatformName());
7072
capabilities.setCapability("deviceName", deviceName);
7173
if (udid != null)
7274
capabilities.setCapability("udid", udid);
@@ -96,8 +98,8 @@ public static AppiumDriver getAndroidDriver() throws Exception {
9698
if (appFile == null) {
9799
appFile = "application.apk";
98100
}
99-
if (platformName == null) {
100-
platformName = "Android";
101+
if (platform == null) {
102+
platform = PlatformType.ANDROID;
101103
}
102104
if (deviceName == null){
103105
deviceName = "device";
@@ -111,7 +113,7 @@ public static AppiumDriver getAndroidDriver() throws Exception {
111113

112114
DesiredCapabilities capabilities = new DesiredCapabilities();
113115
capabilities.setCapability("automationName", automationName);
114-
capabilities.setCapability("platformName", platformName);
116+
capabilities.setCapability("platformName", platform.getPlatformName());
115117
capabilities.setCapability("deviceName", "Android Device");
116118
if (udid != null)
117119
capabilities.setCapability("udid", udid);

src/main/java/TestdroidImageRecognition.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
import org.slf4j.LoggerFactory;
77

88
import dtos.ImageLocation;
9-
import dtos.ImageRecognitionSettingsDTO;
10-
import dtos.ImageSearchDTO;
9+
import dtos.ImageRecognitionSettings;
10+
import dtos.ImageSearchResult;
11+
import dtos.PlatformType;
1112

1213
import java.io.*;
1314

@@ -32,17 +33,17 @@ public void setQueryImageFolder() {
3233
}
3334

3435
public ImageLocation findImageOnScreen(String image) throws Exception {
35-
ImageRecognitionSettingsDTO defaultSettings = new ImageRecognitionSettingsDTO();
36+
ImageRecognitionSettings defaultSettings = new ImageRecognitionSettings();
3637
return findImageOnScreen(image, defaultSettings).getImageLocation();
3738
}
3839

39-
public ImageSearchDTO findImageOnScreen(String imageName, ImageRecognitionSettingsDTO settings) throws Exception {
40+
public ImageSearchResult findImageOnScreen(String imageName, ImageRecognitionSettings settings) throws Exception {
4041
// queryImageFolder is "", unless set by setQueryImageFolder()
4142
String queryImageFolder = "queryimages/" + queryImageSubFolder;
4243
String screenshotsFolder = "target/reports/screenshots/"; //TODO Severi remove this
4344
String imageFile = queryImageFolder+imageName;
4445
log("Searching for: "+imageFile);
45-
ImageSearchDTO foundImage = ImageRecognition.findImageOnScreen(imageFile, screenshotsFolder, settings, getScreenSize(), platformName);
46+
ImageSearchResult foundImage = ImageRecognition.findImageOnScreen(imageFile, screenshotsFolder, settings, getScreenSize(), platform);
4647
return foundImage;
4748
}
4849

@@ -51,14 +52,14 @@ public void waitForImageToDisappearFromScreen(String image) throws Exception {
5152
String screenshotsFolder = "target/reports/screenshots/"; //TODO Severi remove this
5253
Dimension screenSize = getScreenSize(); //TODO Severi remove this
5354
String imageFile = queryImageFolder+image;
54-
boolean hasImageDisappeared = ImageRecognition.hasImageDissappearedFromScreenBeforeTimeout(imageFile, screenshotsFolder, screenSize, platformName);
55+
boolean hasImageDisappeared = ImageRecognition.hasImageDissappearedFromScreenBeforeTimeout(imageFile, screenshotsFolder, screenSize, platform);
5556
assert(hasImageDisappeared);
5657
}
5758

5859
public Dimension getScreenSize() throws Exception {
5960
log("trying to get size from adb...");
6061
log("------------------------------");
61-
if (platformName.equalsIgnoreCase("iOS")) {
62+
if (platform.equals(PlatformType.IOS)) {
6263
return driver.manage().window().getSize();
6364
} else {
6465
return getAndroidScreenSize();
@@ -92,15 +93,15 @@ private Dimension getAndroidScreenSize() throws IOException, InterruptedExceptio
9293

9394

9495
public String grabTextFromImage(String image) throws Exception {
95-
ImageSearchDTO imageSearch = findAndCropImage(image);
96+
ImageSearchResult imageSearch = findAndCropImage(image);
9697
String text = ImageRecognition.getTextStringFromImage(imageSearch.getScreenshotFile());
9798
return text;
9899
}
99100

100-
public ImageSearchDTO findAndCropImage(String image) throws Exception {
101-
ImageRecognitionSettingsDTO settings = new ImageRecognitionSettingsDTO();
101+
public ImageSearchResult findAndCropImage(String image) throws Exception {
102+
ImageRecognitionSettings settings = new ImageRecognitionSettings();
102103
settings.setCrop(true);
103-
ImageSearchDTO imageSearch = findImageOnScreen(image, settings);
104+
ImageSearchResult imageSearch = findImageOnScreen(image, settings);
104105
return imageSearch;
105106
}
106107

src/main/java/dtos/ImageRecognitionSettingsDTO.java renamed to src/main/java/dtos/ImageRecognitionSettings.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package dtos;
22

3-
public class ImageRecognitionSettingsDTO {
3+
public class ImageRecognitionSettings {
44

55
private final int DEFAULT_RETRIES = 5;
66
private final int DEFAULT_RETRY_WAIT = 0;
77
private final double DEFAULT_TOLERANCE = 0.6;
88
private final boolean DEFAULT_CROP = false;
99

10-
public ImageRecognitionSettingsDTO(){
10+
public ImageRecognitionSettings(){
1111
this.retries = DEFAULT_RETRIES;
1212
this.retryWaitTime = DEFAULT_RETRY_WAIT;
1313
this.tolerance = DEFAULT_TOLERANCE;

src/main/java/dtos/ImageSearchDTO.java renamed to src/main/java/dtos/ImageSearchResult.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package dtos;
22

3-
public class ImageSearchDTO {
3+
public class ImageSearchResult {
44

5-
public ImageSearchDTO(){
5+
public ImageSearchResult(){
66
this.screenshotFile = null;
77
this.imageLocation = null;
88
}
99

10-
public ImageSearchDTO(String screenshotFile, ImageLocation imageLocation){
10+
public ImageSearchResult(String screenshotFile, ImageLocation imageLocation){
1111
this.screenshotFile = screenshotFile;
1212
this.imageLocation = imageLocation;
1313
}

src/main/java/dtos/PlatformType.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package dtos;
2+
3+
public enum PlatformType {
4+
ANDROID("Android"),
5+
IOS("iOS");
6+
7+
PlatformType(String platformName){
8+
this.platformName=platformName;
9+
}
10+
11+
public String getPlatformName(){
12+
return this.platformName;
13+
}
14+
15+
private String platformName;
16+
17+
}

src/main/java/library/AkazeImageFinder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.slf4j.LoggerFactory;
1111

1212
import dtos.ImageLocation;
13-
import dtos.ImageSearchDTO;
13+
import dtos.ImageSearchResult;
1414

1515
import java.io.*;
1616
import java.lang.reflect.Field;
@@ -244,7 +244,7 @@ public ImageLocation findImage(String queryImageFile, String sceneFile, double t
244244
return location;
245245
}
246246

247-
public void cropImage(ImageSearchDTO imageDto) {
247+
public void cropImage(ImageSearchResult imageDto) {
248248
double x = imageDto.getImageLocation().getTopLeft().x;
249249
double y = imageDto.getImageLocation().getTopLeft().y;
250250
double width = imageDto.getImageLocation().getWidth();

src/main/java/library/ImageRecognition.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@
1212
import org.slf4j.LoggerFactory;
1313

1414
import dtos.ImageLocation;
15-
import dtos.ImageRecognitionSettingsDTO;
16-
import dtos.ImageSearchDTO;
15+
import dtos.ImageRecognitionSettings;
16+
import dtos.ImageSearchResult;
17+
import dtos.PlatformType;
1718

1819
public class ImageRecognition {
1920

@@ -24,23 +25,23 @@ private static void log(String message) {
2425
}
2526

2627

27-
public static ImageLocation findImage(String image, String scene, String platformName, Dimension screenSize) throws Exception {
28-
ImageRecognitionSettingsDTO setting = new ImageRecognitionSettingsDTO();
29-
return findImage(image, scene, setting, platformName, screenSize);
28+
public static ImageLocation findImage(String image, String scene, PlatformType platform, Dimension screenSize) throws Exception {
29+
ImageRecognitionSettings setting = new ImageRecognitionSettings();
30+
return findImage(image, scene, setting, platform, screenSize);
3031
}
3132

3233

3334
//This method calls on the Akaze scripts to find the coordinates of a given image in another image.
3435
//The "image" parameter is the image that you are searching for
3536
//The "scene" parameter is the image in which we are looking for "image"
3637
// "tolerance" sets the required accuracy for the image recognition algorithm.
37-
public static ImageLocation findImage(String image, String scene, ImageRecognitionSettingsDTO settings, String platformName, Dimension screenSize) throws Exception {
38+
public static ImageLocation findImage(String image, String scene, ImageRecognitionSettings settings, PlatformType platform, Dimension screenSize) throws Exception {
3839
log("Searching for " + image);
3940
log("Searching in " + scene);
4041
ImageLocation imgLocation = findImageUsingAkaze(image, scene, settings);
4142

4243
if (imgLocation != null) {
43-
if (platformName.equalsIgnoreCase("iOS")) {
44+
if (platform.equals(PlatformType.IOS)) {
4445
imgLocation = scaleImageRectangleForIos(screenSize, imgLocation, scene);
4546
}
4647
Point center = imgLocation.getCenter();
@@ -55,7 +56,7 @@ public static ImageLocation findImage(String image, String scene, ImageRecogniti
5556

5657

5758

58-
private static ImageLocation findImageUsingAkaze(String image, String scene, ImageRecognitionSettingsDTO settings) {
59+
private static ImageLocation findImageUsingAkaze(String image, String scene, ImageRecognitionSettings settings) {
5960
ImageLocation location = imageFinder.findImage(image, scene, settings.getTolerance());
6061
return location;
6162
}
@@ -106,14 +107,14 @@ private static boolean isPointInsideScreenBounds(Point center, Dimension screenS
106107

107108

108109
public static boolean hasImageDissappearedFromScreenBeforeTimeout(String imageFile,
109-
String screenshotsFolder, Dimension screenSize, String platformName) throws Exception {
110+
String screenshotsFolder, Dimension screenSize, PlatformType platform) throws Exception {
110111
log("==> Trying to find image: " + imageFile);
111112
int retry_counter=0;
112113
long start = System.nanoTime();
113114
while (((System.nanoTime() - start) / 1e6 / 1000 < 300)) {
114115
String screenshotName = parseFileName(imageFile) + "_screenshot_"+retry_counter;
115-
String screenShotFile = ImageRecognition.takeScreenshot(screenshotName, screenshotsFolder, platformName);
116-
if ((findImage(imageFile, screenShotFile, platformName, screenSize)) == null) {
116+
String screenShotFile = ImageRecognition.takeScreenshot(screenshotName, screenshotsFolder, platform);
117+
if ((findImage(imageFile, screenShotFile, platform, screenSize)) == null) {
117118
log("Image has successfully disappeared from screen.");
118119
return true;
119120
}
@@ -153,22 +154,22 @@ public static String getTextStringFromImage(String imageInput) {
153154

154155

155156

156-
public static ImageSearchDTO findImageOnScreen(String imageFile, String screenshotsFolder, ImageRecognitionSettingsDTO settings, Dimension screenSize, String platformName) throws InterruptedException, IOException, Exception {
157-
ImageSearchDTO foundImageDto = findImageLoop(imageFile, screenshotsFolder, settings, screenSize, platformName);
157+
public static ImageSearchResult findImageOnScreen(String imageFile, String screenshotsFolder, ImageRecognitionSettings settings, Dimension screenSize, PlatformType platform) throws InterruptedException, IOException, Exception {
158+
ImageSearchResult foundImageDto = findImageLoop(imageFile, screenshotsFolder, settings, screenSize, platform);
158159
if (foundImageDto.isFound() && settings.isCrop()) {
159160
cropImage(foundImageDto);
160161
}
161162
return foundImageDto;
162163
}
163164

164-
private static ImageSearchDTO findImageLoop(String imageFile, String screenshotsFolder, ImageRecognitionSettingsDTO settings, Dimension screenSize, String platformName) throws InterruptedException, IOException, Exception {
165+
private static ImageSearchResult findImageLoop(String imageFile, String screenshotsFolder, ImageRecognitionSettings settings, Dimension screenSize, PlatformType platform) throws InterruptedException, IOException, Exception {
165166
long start_time = System.nanoTime();
166-
ImageSearchDTO foundImageDto = new ImageSearchDTO();
167+
ImageSearchResult foundImageDto = new ImageSearchResult();
167168
String imageName = parseFileName(imageFile);
168169
for (int i = 0; i < settings.getRetries(); i++) {
169170
String screenshotName = imageName + "_screenshot_"+i;
170-
String screenshotFile = takeScreenshot(screenshotName,screenshotsFolder, platformName);
171-
ImageLocation imageLocation = ImageRecognition.findImage(imageFile, screenshotFile, settings, platformName, screenSize);
171+
String screenshotFile = takeScreenshot(screenshotName,screenshotsFolder, platform);
172+
ImageLocation imageLocation = ImageRecognition.findImage(imageFile, screenshotFile, settings, platform, screenSize);
172173
if (imageLocation!=null){
173174
long end_time = System.nanoTime();
174175
int difference = (int) ((end_time - start_time) / 1e6 / 1000);
@@ -183,13 +184,13 @@ private static ImageSearchDTO findImageLoop(String imageFile, String screenshots
183184
return foundImageDto;
184185
}
185186

186-
private static void cropImage(ImageSearchDTO foundImage) {
187+
private static void cropImage(ImageSearchResult foundImage) {
187188
log("Cropping image..");
188189
imageFinder.cropImage(foundImage);
189190
log("Cropping image.. Succeeded!");
190191
}
191192

192-
private static void retryWait(ImageRecognitionSettingsDTO settings) throws InterruptedException {
193+
private static void retryWait(ImageRecognitionSettings settings) throws InterruptedException {
193194
if (settings.getRetryWaitTime() > 0) {
194195
log("retryWait given, sleeping " + settings.getRetryWaitTime() + " seconds.");
195196
sleep(settings.getRetryWaitTime());
@@ -211,18 +212,18 @@ private static void sleep(int seconds) throws InterruptedException {
211212
}
212213
213214
*/
214-
public static String takeScreenshot(String screenshotName, String screenshotsFolder, String platformName) throws Exception {
215+
public static String takeScreenshot(String screenshotName, String screenshotsFolder, PlatformType platform) throws Exception {
215216
long start_time = System.nanoTime();
216217

217218
String screenshotFile = screenshotsFolder + screenshotName + ".png";
218219
String fullFileName = System.getProperty("user.dir") + "/" + screenshotFile;
219220

220-
if (platformName.equalsIgnoreCase("iOS")) {
221+
if (platform.equals(PlatformType.IOS)) {
221222
takeIDeviceScreenshot(fullFileName);
222-
} else if (platformName.equalsIgnoreCase("Android")) {
223+
} else if (platform.equals(PlatformType.ANDROID)) {
223224
takeAndroidScreenshot(fullFileName);
224225
} else{
225-
throw new Exception("Invalid platformName: "+platformName);
226+
throw new Exception("Invalid platformType: "+platform);
226227
}
227228

228229
long end_time = System.nanoTime();

0 commit comments

Comments
 (0)