Skip to content

Commit c108012

Browse files
authored
Merge pull request #4 from Hi-Fi/textKeywords
Text keywords
2 parents 4c604fe + 433d95d commit c108012

File tree

14 files changed

+386
-138
lines changed

14 files changed

+386
-138
lines changed
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
package com.github.hi_fi.remotesikulilibrary.DTO;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
6+
import org.apache.commons.io.FileUtils;
7+
import org.apache.commons.lang.math.NumberUtils;
8+
import org.apache.ws.commons.util.Base64;
9+
import org.apache.ws.commons.util.Base64.DecodingException;
10+
11+
import com.github.hi_fi.remotesikulilibrary.utils.Helper;
12+
import com.github.hi_fi.remotesikulilibrary.utils.SikuliLogger;
13+
14+
public class Locator {
15+
16+
private String imageData = "";
17+
private boolean image;
18+
private boolean text;
19+
private boolean remote = false;
20+
private int xOffset = 0;
21+
private int yOffset = 0;
22+
private double similarity = 0.7;
23+
24+
25+
public Locator(String[] args) {
26+
SikuliLogger.logDebug(args);
27+
if (args.length > 0 && NumberUtils.isNumber(args[0].toString())) {
28+
this.setSimilarity(Double.parseDouble(args[0].toString()));
29+
if (args.length == 3) {
30+
if (NumberUtils.isNumber(args[1].toString())) {
31+
this.setxOffset(Integer.parseInt(args[1].toString()));
32+
}
33+
if (NumberUtils.isNumber(args[2].toString())) {
34+
this.setyOffset(Integer.parseInt(args[2].toString()));
35+
}
36+
}
37+
}
38+
39+
if (args.length > 0 && !NumberUtils.isNumber(args[args.length-1].toString()) && args[args.length-1].toString().length() > 10) {
40+
this.setRemote(true);
41+
this.setImage(true);
42+
this.setText(false);
43+
this.setImageData(args[args.length-1].toString());
44+
} else {
45+
this.setText(true);
46+
this.setImage(false);
47+
}
48+
}
49+
50+
51+
public String getImageData() {
52+
return imageData;
53+
}
54+
55+
56+
public void setImageData(String imageData) {
57+
this.imageData = imageData;
58+
}
59+
60+
61+
public boolean isImage() {
62+
return image;
63+
}
64+
65+
66+
public void setImage(boolean image) {
67+
this.image = image;
68+
}
69+
70+
71+
public boolean isText() {
72+
return text;
73+
}
74+
75+
76+
public void setText(boolean text) {
77+
this.text = text;
78+
}
79+
80+
81+
public boolean isRemote() {
82+
return remote;
83+
}
84+
85+
86+
public void setRemote(boolean remote) {
87+
this.remote = remote;
88+
}
89+
90+
91+
public int getxOffset() {
92+
return xOffset;
93+
}
94+
95+
96+
public void setxOffset(int xOffset) {
97+
this.xOffset = xOffset;
98+
}
99+
100+
101+
public int getyOffset() {
102+
return yOffset;
103+
}
104+
105+
106+
public void setyOffset(int yOffset) {
107+
this.yOffset = yOffset;
108+
}
109+
110+
111+
public double getSimilarity() {
112+
return similarity;
113+
}
114+
115+
public float getSimilarityasFloat() {
116+
return (float) similarity;
117+
}
118+
119+
120+
public void setSimilarity(double similarity) {
121+
this.similarity = similarity;
122+
}
123+
124+
public void encodeImageToBase64(String imageNameOrText) {
125+
try {
126+
SikuliLogger.logDebug("Checking if " + Helper.getImageDirectory() + "/" + imageNameOrText + " is image");
127+
File localImage = new File(Helper.getImageDirectory() + "/" + imageNameOrText);
128+
if (localImage.exists()) {
129+
this.imageData = Base64.encode(FileUtils.readFileToByteArray(localImage));
130+
}
131+
} catch (IOException e) {
132+
e.printStackTrace();
133+
}
134+
}
135+
136+
public String updateLocatorTarget(String imageNameOrText) {
137+
if (this.isRemote() && this.getImageData().length() > 10) {
138+
SikuliLogger.logDebug("Parsing image from remote call");
139+
try {
140+
imageNameOrText = Helper.writeImageByteArrayToDisk(Base64.decode(this.getImageData()));
141+
this.setImage(true);
142+
} catch (DecodingException e) {
143+
SikuliLogger.logDebug(e.getStackTrace());
144+
throw new RuntimeException(e.getMessage());
145+
}
146+
} else if (!this.isRemote() && new File(Helper.getImageDirectory() + "/" + imageNameOrText).exists()) {
147+
imageNameOrText = Helper.getImageDirectory() + "/" + imageNameOrText;
148+
this.setImage(true);
149+
}
150+
return imageNameOrText;
151+
}
152+
}

src/main/java/com/github/hi_fi/remotesikulilibrary/impl/Client.java

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package com.github.hi_fi.remotesikulilibrary.impl;
22

3-
import java.io.File;
4-
import java.io.IOException;
53
import java.util.HashMap;
64
import java.util.Map;
75

8-
import org.apache.commons.io.FileUtils;
96
import org.apache.ws.commons.util.Base64;
107
import org.apache.ws.commons.util.Base64.DecodingException;
118
import org.apache.xmlrpc.XmlRpcException;
129

10+
import com.github.hi_fi.remotesikulilibrary.DTO.Locator;
1311
import com.github.hi_fi.remotesikulilibrary.utils.Helper;
1412
import com.github.hi_fi.remotesikulilibrary.utils.SikuliLogger;
1513

@@ -21,7 +19,7 @@
2119
*/
2220
public class Client implements RemoteSikuliLibraryInterface {
2321

24-
public String captureScreenshot(Object... remote) {
22+
public String captureScreenshot(String[] remote) {
2523
SikuliLogger.logDebug("Calling screenshot capture from client class");
2624
String response = this.executeRemoteCall("captureScreenshot", true);
2725
try {
@@ -37,21 +35,29 @@ public void enableDebugging() {
3735
this.executeRemoteCall("enableDebugging");
3836
}
3937

40-
public void clickItem(String imageNameOrText, double similarity, int xOffset, int yOffset, boolean remote,
41-
Object... imageData) {
42-
Object image = "";
43-
try {
44-
SikuliLogger.logDebug("Checking if " + Helper.getImageDirectory() + "/" + imageNameOrText + " is image");
45-
File localImage = new File(Helper.getImageDirectory() + "/" + imageNameOrText);
46-
if (localImage.exists()) {
47-
image = Base64.encode(FileUtils.readFileToByteArray(localImage));
48-
}
49-
} catch (IOException e) {
50-
e.printStackTrace();
51-
}
52-
this.executeRemoteCall("clickItem", imageNameOrText, similarity, xOffset, yOffset, true, image);
38+
public void clickItem(String imageNameOrText, Locator locator) {
39+
locator.encodeImageToBase64(imageNameOrText);
40+
locator.setRemote(true);
41+
42+
this.executeRemoteCall("clickItem", imageNameOrText, locator.getSimilarity(), locator.getxOffset(), locator.getyOffset(), locator.isRemote(), locator.getImageData());
43+
}
44+
45+
public void waitUntilScreenContains(String imageNameOrText, Locator locator) {
46+
locator.encodeImageToBase64(imageNameOrText);
47+
locator.setRemote(true);
48+
this.executeRemoteCall("waitUntilScreenContains", imageNameOrText, locator.getSimilarity(), locator.isRemote(), locator.getImageData());
49+
}
50+
51+
public void inputText(String text, String imageNameOrText, Locator locator) {
52+
locator.encodeImageToBase64(imageNameOrText);
53+
locator.setRemote(true);
54+
this.executeRemoteCall("inputText", text, imageNameOrText, locator.getSimilarity(), locator.getxOffset(), locator.getyOffset(), locator.isRemote(), locator.getImageData());
5355
}
5456

57+
public void typeKeys(String keys, String[] modifiers) {
58+
this.executeRemoteCall("typeKeys", keys, modifiers);
59+
}
60+
5561
@SuppressWarnings("rawtypes")
5662
private String executeRemoteCall(String keyword, Object... params) {
5763
Map response = new HashMap();
@@ -88,19 +94,4 @@ private String executeRemoteCall(String keyword, Object... params) {
8894
return "No return value";
8995
}
9096
}
91-
92-
public void waitUntilScreenContains(String imageNameOrText, double similarity, boolean remote,
93-
Object... imageData) {
94-
Object image = "";
95-
try {
96-
SikuliLogger.logDebug("Checking if " + Helper.getImageDirectory() + "/" + imageNameOrText + " is image");
97-
File localImage = new File(Helper.getImageDirectory() + "/" + imageNameOrText);
98-
if (localImage.exists()) {
99-
image = Base64.encode(FileUtils.readFileToByteArray(localImage));
100-
}
101-
} catch (IOException e) {
102-
e.printStackTrace();
103-
}
104-
this.executeRemoteCall("waitUntilScreenContains", imageNameOrText, similarity, true, image);
105-
}
10697
}
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package com.github.hi_fi.remotesikulilibrary.impl;
22

3+
import com.github.hi_fi.remotesikulilibrary.DTO.Locator;
4+
35
public interface RemoteSikuliLibraryInterface {
46

5-
public String captureScreenshot(Object...remote);
7+
public String captureScreenshot(String[] remote);
68

79
public void enableDebugging();
810

9-
public void clickItem(String imageNameOrText, double similarity, int xOffset, int yOffset, boolean remote, Object...imageData);
11+
public void clickItem(String imageNameOrText, Locator locator);
1012

11-
public void waitUntilScreenContains(String imageNameOrText, double similarity, boolean remote, Object...imageData);
13+
public void waitUntilScreenContains(String imageNameOrText, Locator locator);
14+
15+
public void inputText(String text, String imageNameOrText, Locator locator);
16+
17+
public void typeKeys(String text, String[] modifiers);
1218

1319
}

0 commit comments

Comments
 (0)