calabash-android 0.4.22.pre4 → 0.5.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/calabash-android +66 -45
- data/lib/calabash-android/calabash_steps.rb +0 -8
- data/lib/calabash-android/canned_steps.md +2 -30
- data/lib/calabash-android/lib/TestServer.apk +0 -0
- data/lib/calabash-android/operations.rb +199 -23
- data/lib/calabash-android/removed_actions.txt +52 -0
- data/lib/calabash-android/steps/assert_steps.rb +9 -24
- data/lib/calabash-android/steps/check_box_steps.rb +2 -2
- data/lib/calabash-android/steps/context_menu_steps.rb +11 -4
- data/lib/calabash-android/steps/date_picker_steps.rb +2 -2
- data/lib/calabash-android/steps/enter_text_steps.rb +13 -13
- data/lib/calabash-android/steps/l10n_steps.rb +5 -5
- data/lib/calabash-android/steps/map_steps.rb +12 -12
- data/lib/calabash-android/steps/navigation_steps.rb +12 -12
- data/lib/calabash-android/steps/press_button_steps.rb +16 -12
- data/lib/calabash-android/steps/progress_steps.rb +19 -22
- data/lib/calabash-android/steps/search_steps.rb +2 -2
- data/lib/calabash-android/steps/spinner_steps.rb +10 -2
- data/lib/calabash-android/steps/time_picker_steps.rb +2 -2
- data/lib/calabash-android/version.rb +1 -1
- data/lib/calabash-android/wait_helpers.rb +29 -1
- data/test-server/instrumentation-backend/antlr/UIQuery.g +11 -11
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/CalabashInstrumentationTestRunner.java +3 -2
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/InstrumentationBackend.java +9 -4
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +16 -12
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/application/Backdoor.java +55 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/gestures/LongPressCoordinate.java +19 -2
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptExecuter.java +105 -0
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +27 -30
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +27 -18
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ComparisonOperator.java +7 -1
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicate.java +16 -4
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +13 -6
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +94 -48
- metadata +5 -59
- data/lib/calabash-android/steps/additions_manual_steps.rb +0 -11
- data/lib/calabash-android/steps/app_steps.rb +0 -10
- data/lib/calabash-android/steps/list_steps.rb +0 -41
- data/lib/calabash-android/steps/rotation_steps.rb +0 -7
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonNumber.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressButtonText.java +0 -27
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonDescription.java +0 -39
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/PressImageButtonNumber.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/button/WaitForButton.java +0 -47
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/checkbox/ToggleCheckboxNumber.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressText.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuById.java +0 -26
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByIndex.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/contextmenu/LongPressTextAndSelectFromMenuByText.java +0 -26
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/helpers/InspectCurrentDialog.java +0 -76
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/GetListData.java +0 -85
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/GetListItemProperties.java +0 -194
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/GetListItemText.java +0 -136
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/LongPressListItems.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/list/PressListItems.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollDown.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/scrolling/ScrollUp.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/search/EnterQueryByIndex.java +0 -29
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/softkey/SelectFromMenuByText.java +0 -24
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/GetSelectedSpinnerItemText.java +0 -36
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/spinner/SelectSpinnerItemByContentDescription.java +0 -43
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertGridViewContainsNoDuplicates.java +0 -72
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertText.java +0 -31
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/AssertTextOfSpecificTextViewByContentDescription.java +0 -32
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextById.java +0 -30
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextByIndex.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClearTextFieldByContentDescription.java +0 -33
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/ClickOnText.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByContentDescription.java +0 -32
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextById.java +0 -33
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/EnterTextByIndex.java +0 -22
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/text/GetTextById.java +0 -42
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/AssertViewProperty.java +0 -141
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewByDescription.java +0 -46
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/ClickOnViewById.java +0 -56
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/GetViewProperty.java +0 -101
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/HasView.java +0 -31
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/IsEnabled.java +0 -30
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/LongPressOnViewById.java +0 -34
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/Press.java +0 -89
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/view/SelectTab.java +0 -110
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/Wait.java +0 -24
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForDialogClose.java +0 -21
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForProgress.java +0 -47
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForScreen.java +0 -54
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForTab.java +0 -108
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForText.java +0 -37
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForView.java +0 -43
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/wait/WaitForViewById.java +0 -58
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +0 -44
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +0 -70
- data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +0 -64
@@ -1,108 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.actions.wait;
|
2
|
-
|
3
|
-
import java.util.List;
|
4
|
-
|
5
|
-
import sh.calaba.instrumentationbackend.InstrumentationBackend;
|
6
|
-
import sh.calaba.instrumentationbackend.Result;
|
7
|
-
import sh.calaba.instrumentationbackend.actions.Action;
|
8
|
-
import android.os.SystemClock;
|
9
|
-
import android.util.Log;
|
10
|
-
import android.view.View;
|
11
|
-
import android.widget.TabHost;
|
12
|
-
import android.widget.TextView;
|
13
|
-
|
14
|
-
/**
|
15
|
-
* Waits for a tab by name
|
16
|
-
*
|
17
|
-
* @author Nicholas Albion
|
18
|
-
*/
|
19
|
-
public class WaitForTab implements Action {
|
20
|
-
|
21
|
-
@Override
|
22
|
-
public Result execute(String... args) {
|
23
|
-
|
24
|
-
final int DEFAULT_TIMEOUT = 5 * 1000;
|
25
|
-
int timeout = DEFAULT_TIMEOUT;
|
26
|
-
|
27
|
-
switch (args.length) {
|
28
|
-
case 0:
|
29
|
-
return new Result(false, "Cannot check for correct screen. No tab name supplied!");
|
30
|
-
case 1: {
|
31
|
-
return waitForTab( args[0], DEFAULT_TIMEOUT );
|
32
|
-
}
|
33
|
-
case 2: { // 1st arg is Activity name, 2nd arg is timeout
|
34
|
-
try {
|
35
|
-
timeout = Integer.parseInt(args[1]);
|
36
|
-
} catch (NumberFormatException e) {
|
37
|
-
return new Result(false, "Invalid timeout supplied. Should be an integer!");
|
38
|
-
}
|
39
|
-
return waitForTab( args[0], timeout );
|
40
|
-
}
|
41
|
-
default:
|
42
|
-
return new Result(false, "Too many argument supplied to wait_for_tab!");
|
43
|
-
}
|
44
|
-
}
|
45
|
-
|
46
|
-
private Result waitForTab( String tabName, int timeout ) {
|
47
|
-
int tabHostIndex = 0;
|
48
|
-
long startTime = SystemClock.uptimeMillis();
|
49
|
-
// TabHost tabHost = InstrumentationBackend.solo.getView( TabHost.class, tabHostIndex ); // waits 10 seconds
|
50
|
-
|
51
|
-
if( InstrumentationBackend.solo.waitForView( TabHost.class, 1, timeout ) ) {
|
52
|
-
TabHost tabHost = (TabHost)InstrumentationBackend.solo.getView(TabHost.class, tabHostIndex);
|
53
|
-
|
54
|
-
boolean tabFound = false;
|
55
|
-
int numberOfTabs = tabHost.getChildCount();
|
56
|
-
for( int i = 0; i < numberOfTabs; i++ ) {
|
57
|
-
if( tabName.equals( tabHost.getTag(i) ) ) {
|
58
|
-
tabFound = true;
|
59
|
-
break;
|
60
|
-
}
|
61
|
-
}
|
62
|
-
if( tabFound == false ) {
|
63
|
-
Log.w("WaitForTab", "Tab was not found: " + tabName);
|
64
|
-
// return new Result(false, "Tab " + tabName + " not found");
|
65
|
-
}
|
66
|
-
|
67
|
-
String currentTab;
|
68
|
-
do {
|
69
|
-
int tabIndex = tabHost.getCurrentTab();
|
70
|
-
View view = tabHost.getTabWidget().getChildTabViewAt(tabIndex);
|
71
|
-
if( view instanceof TextView ) {
|
72
|
-
currentTab = ((TextView)view).getText().toString();
|
73
|
-
if( tabName.equals(currentTab) ) {
|
74
|
-
return new Result(true, "The current tab text view matches");
|
75
|
-
}
|
76
|
-
} else {
|
77
|
-
Log.i("WaitForTab", "current tab view: " + view.getId() + ", " + view.getClass().getSimpleName());
|
78
|
-
List<TextView> textViews = InstrumentationBackend.solo.getCurrentViews(TextView.class, view);
|
79
|
-
for( TextView textView : textViews ) {
|
80
|
-
currentTab = textView.getText().toString();
|
81
|
-
Log.i("WaitForTab", " child text view: " + currentTab);
|
82
|
-
if( tabName.equals(currentTab) ) {
|
83
|
-
return new Result(true, "The current tab text view matches");
|
84
|
-
}
|
85
|
-
}
|
86
|
-
}
|
87
|
-
|
88
|
-
currentTab = tabHost.getCurrentTabTag();
|
89
|
-
|
90
|
-
if( tabName.equals(currentTab) ) {
|
91
|
-
return new Result(true, "The current tab's tag matches");
|
92
|
-
}
|
93
|
-
try {
|
94
|
-
Thread.sleep(500);
|
95
|
-
} catch (InterruptedException e) {}
|
96
|
-
} while( (SystemClock.uptimeMillis() - startTime) < timeout );
|
97
|
-
|
98
|
-
return new Result(false, "The current tab is: " + currentTab + ", was tab even found? " + tabFound);
|
99
|
-
} else {
|
100
|
-
return new Result(false, "Timed out waiting for a TabActivity. Current activity is " + InstrumentationBackend.solo.getCurrentActivity().getLocalClassName());
|
101
|
-
}
|
102
|
-
}
|
103
|
-
|
104
|
-
@Override
|
105
|
-
public String key() {
|
106
|
-
return "wait_for_tab";
|
107
|
-
}
|
108
|
-
}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.actions.wait;
|
2
|
-
|
3
|
-
|
4
|
-
import sh.calaba.instrumentationbackend.InstrumentationBackend;
|
5
|
-
import sh.calaba.instrumentationbackend.Result;
|
6
|
-
import sh.calaba.instrumentationbackend.actions.Action;
|
7
|
-
|
8
|
-
|
9
|
-
public class WaitForText implements Action {
|
10
|
-
|
11
|
-
@Override
|
12
|
-
public Result execute(String... args) {
|
13
|
-
|
14
|
-
int timeout = 90 * 1000;
|
15
|
-
if (args.length > 1) { // a second argument is a timeout
|
16
|
-
try {
|
17
|
-
// the argument is in seconds but robotium takes milliseconds
|
18
|
-
timeout = 1000 * Integer.parseInt(args[1]);
|
19
|
-
} catch (NumberFormatException e) {
|
20
|
-
return new Result(false, "Invalid timeout supplied. Should be an integer.");
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
boolean timedOut = !InstrumentationBackend.solo.waitForText(args[0], 1, timeout);
|
25
|
-
if(timedOut) {
|
26
|
-
return new Result(false, "Time out while waiting for text:" + args[0]);
|
27
|
-
} else {
|
28
|
-
return Result.successResult();
|
29
|
-
}
|
30
|
-
|
31
|
-
}
|
32
|
-
|
33
|
-
@Override
|
34
|
-
public String key() {
|
35
|
-
return "wait_for_text";
|
36
|
-
}
|
37
|
-
}
|
@@ -1,43 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.actions.wait;
|
2
|
-
|
3
|
-
import sh.calaba.instrumentationbackend.InstrumentationBackend;
|
4
|
-
import sh.calaba.instrumentationbackend.Result;
|
5
|
-
import sh.calaba.instrumentationbackend.TestHelpers;
|
6
|
-
import sh.calaba.instrumentationbackend.actions.Action;
|
7
|
-
import android.view.View;
|
8
|
-
|
9
|
-
public class WaitForView implements Action {
|
10
|
-
|
11
|
-
@Override
|
12
|
-
public Result execute(String... args) {
|
13
|
-
String text = args[0];
|
14
|
-
long endTime = System.currentTimeMillis() + 60000;
|
15
|
-
while (System.currentTimeMillis() < endTime) {
|
16
|
-
if (InstrumentationBackend.solo.searchButton(text) || searchForViewWithContentDescription(text)) {
|
17
|
-
return Result.successResult();
|
18
|
-
} else {
|
19
|
-
try {
|
20
|
-
Thread.sleep(500);
|
21
|
-
} catch (InterruptedException e) {
|
22
|
-
return Result.fromThrowable(e);
|
23
|
-
}
|
24
|
-
}
|
25
|
-
}
|
26
|
-
return new Result(false, "Timed out while waiting for view with text or contentDescription:'" + text + "'");
|
27
|
-
}
|
28
|
-
|
29
|
-
@Override
|
30
|
-
public String key() {
|
31
|
-
return "wait_for_view";
|
32
|
-
}
|
33
|
-
|
34
|
-
private boolean searchForViewWithContentDescription(String description) {
|
35
|
-
View view = TestHelpers.getViewByDescription(description);
|
36
|
-
if (view != null) {
|
37
|
-
return true;
|
38
|
-
} else {
|
39
|
-
return false;
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
|
-
}
|
@@ -1,58 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.actions.wait;
|
2
|
-
|
3
|
-
|
4
|
-
import sh.calaba.instrumentationbackend.Result;
|
5
|
-
import sh.calaba.instrumentationbackend.TestHelpers;
|
6
|
-
import sh.calaba.instrumentationbackend.actions.Action;
|
7
|
-
import android.view.View;
|
8
|
-
|
9
|
-
|
10
|
-
public class WaitForViewById implements Action {
|
11
|
-
|
12
|
-
@Override
|
13
|
-
public Result execute(String... args) {
|
14
|
-
String viewId = args[0];
|
15
|
-
|
16
|
-
try {
|
17
|
-
if( getViewById(viewId, 60000) != null ) {
|
18
|
-
return Result.successResult();
|
19
|
-
} else {
|
20
|
-
return new Result(false, "Waiting for view with id '" + viewId + "' to be visible timed out");
|
21
|
-
}
|
22
|
-
} catch( InterruptedException e ) {
|
23
|
-
return Result.fromThrowable(e);
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
protected View getViewById( String viewId, long timeout ) throws InterruptedException {
|
28
|
-
|
29
|
-
System.out.println("Waiting for view with id '" + viewId + "' to appear");
|
30
|
-
|
31
|
-
View view = TestHelpers.getViewById(viewId);
|
32
|
-
|
33
|
-
// no view, quick exit
|
34
|
-
if(view == null){
|
35
|
-
throw new IllegalArgumentException("Could not find view with id '" + viewId + "'");
|
36
|
-
}
|
37
|
-
|
38
|
-
System.out.println("Waiting for view with id '" + viewId + "' found view " + view);
|
39
|
-
|
40
|
-
long endTime = System.currentTimeMillis() + timeout;
|
41
|
-
while (System.currentTimeMillis() < endTime) {
|
42
|
-
if (view.getVisibility() == View.VISIBLE) {
|
43
|
-
System.out.println("View with id '" + viewId + "' is visible, success");
|
44
|
-
return view;
|
45
|
-
} else {
|
46
|
-
System.out.println("View with id '" + viewId + "' is not visible, sleeping...");
|
47
|
-
Thread.sleep(500);
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
return null;
|
52
|
-
}
|
53
|
-
|
54
|
-
@Override
|
55
|
-
public String key() {
|
56
|
-
return "wait_for_view_by_id";
|
57
|
-
}
|
58
|
-
}
|
@@ -1,44 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.actions.webview;
|
2
|
-
|
3
|
-
import sh.calaba.instrumentationbackend.query.Operation;
|
4
|
-
|
5
|
-
public class JavaScriptOperation implements Operation {
|
6
|
-
|
7
|
-
public final String script;
|
8
|
-
public final String arg;
|
9
|
-
|
10
|
-
public JavaScriptOperation(String script, String args) {
|
11
|
-
this.script = script;
|
12
|
-
this.arg = args;
|
13
|
-
}
|
14
|
-
|
15
|
-
@SuppressWarnings("unchecked")
|
16
|
-
@Override
|
17
|
-
public Object apply(Object o) {
|
18
|
-
throw new UnsupportedOperationException("asd");
|
19
|
-
/*
|
20
|
-
Map<String, Object> domEl = (Map<String, Object>) o;
|
21
|
-
|
22
|
-
WebView webView = (WebView) domEl.get("webView");
|
23
|
-
|
24
|
-
domEl.remove("class");
|
25
|
-
domEl.remove("html");
|
26
|
-
domEl.remove("webView");
|
27
|
-
|
28
|
-
String elJson = QueryHelper.toJsonString(domEl);
|
29
|
-
|
30
|
-
|
31
|
-
WebFuture asyncRes = QueryHelper.executeAsyncJavascriptInWebviews(webView, this.script,
|
32
|
-
elJson, this.arg);
|
33
|
-
return asyncRes.getAsString();
|
34
|
-
*/
|
35
|
-
}
|
36
|
-
|
37
|
-
@Override
|
38
|
-
public String getName() {
|
39
|
-
return "JSOp[script="+this.script+"]";
|
40
|
-
}
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
}
|
@@ -1,70 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.actions.webview;
|
2
|
-
|
3
|
-
|
4
|
-
import java.util.ArrayList;
|
5
|
-
import java.util.List;
|
6
|
-
import java.util.concurrent.Callable;
|
7
|
-
|
8
|
-
import sh.calaba.instrumentationbackend.Result;
|
9
|
-
import sh.calaba.instrumentationbackend.actions.Action;
|
10
|
-
import sh.calaba.instrumentationbackend.actions.webview.CalabashChromeClient.WebFuture;
|
11
|
-
import sh.calaba.instrumentationbackend.query.ast.UIQueryUtils;
|
12
|
-
import android.webkit.WebView;
|
13
|
-
|
14
|
-
@Deprecated
|
15
|
-
public class PressByCssSelector implements Action {
|
16
|
-
|
17
|
-
@SuppressWarnings({ "unchecked", "rawtypes" })
|
18
|
-
@Override
|
19
|
-
public Result execute(final String... args) {
|
20
|
-
List<WebFuture> webResults = (List<WebFuture>) UIQueryUtils.evaluateSyncInMainThread(new Callable() {
|
21
|
-
|
22
|
-
public Object call() throws Exception {
|
23
|
-
|
24
|
-
List<WebFuture> webResults = new ArrayList();
|
25
|
-
for (CalabashChromeClient ccc : CalabashChromeClient.findAndPrepareWebViews()) {
|
26
|
-
WebView webView = ccc.getWebView();
|
27
|
-
|
28
|
-
webView.loadUrl("javascript:(function() {" +
|
29
|
-
"var element = document.querySelector(\"" + args[0] + "\");" +
|
30
|
-
"if (element != null) {" +
|
31
|
-
" var oEvent = document.createEvent ('MouseEvent');" +
|
32
|
-
" oEvent.initMouseEvent('click', true, true,window, 1, 1, 1, 1, 1, false, false, false, false, 0, element);" +
|
33
|
-
" element.dispatchEvent( oEvent );" +
|
34
|
-
" prompt('calabash:true');" +
|
35
|
-
" return;" +
|
36
|
-
"}" +
|
37
|
-
"prompt('calabash:false');" +
|
38
|
-
"})()");
|
39
|
-
|
40
|
-
webResults.add(ccc.getResult());
|
41
|
-
}
|
42
|
-
return webResults;
|
43
|
-
|
44
|
-
}
|
45
|
-
});
|
46
|
-
|
47
|
-
List<String> allResults = new ArrayList<String>(webResults.size());
|
48
|
-
boolean success = false;
|
49
|
-
for (WebFuture f : webResults) {
|
50
|
-
String result = f.getAsString();
|
51
|
-
allResults.add(result);
|
52
|
-
if ("true".equals(result)) {
|
53
|
-
success = true;
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
if (allResults.size() == 0) {
|
58
|
-
return new Result(false, "No WebView found");
|
59
|
-
}
|
60
|
-
else {
|
61
|
-
return new Result(success, allResults);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
@Override
|
66
|
-
public String key() {
|
67
|
-
return "click_by_selector";
|
68
|
-
}
|
69
|
-
|
70
|
-
}
|
@@ -1,64 +0,0 @@
|
|
1
|
-
package sh.calaba.instrumentationbackend.actions.webview;
|
2
|
-
|
3
|
-
|
4
|
-
import android.webkit.WebView;
|
5
|
-
|
6
|
-
import java.util.Map;
|
7
|
-
import java.util.concurrent.Callable;
|
8
|
-
|
9
|
-
import sh.calaba.instrumentationbackend.Result;
|
10
|
-
import sh.calaba.instrumentationbackend.actions.Action;
|
11
|
-
import sh.calaba.instrumentationbackend.query.QueryResult;
|
12
|
-
import sh.calaba.instrumentationbackend.query.ast.UIQueryUtils;
|
13
|
-
|
14
|
-
|
15
|
-
public class SetText implements Action {
|
16
|
-
|
17
|
-
/**
|
18
|
-
* args[0]: Selector type "xpath" or "css"
|
19
|
-
* args[1]: xpath or css selector
|
20
|
-
* args[2]: text to enter into the first selected element
|
21
|
-
*/
|
22
|
-
@SuppressWarnings({ "rawtypes", "unchecked"})
|
23
|
-
@Override
|
24
|
-
public Result execute(final String... args) {
|
25
|
-
String query = args[1];
|
26
|
-
if (!query.startsWith("'")) {
|
27
|
-
query = "'" + query;
|
28
|
-
}
|
29
|
-
if (!query.endsWith("'")) {
|
30
|
-
query = query + "'";
|
31
|
-
}
|
32
|
-
|
33
|
-
final String uiQuery = "android.webkit.WebView " + args[0] + ":" + query;
|
34
|
-
QueryResult queryResult = new sh.calaba.instrumentationbackend.query.Query(uiQuery).executeQuery();
|
35
|
-
if (queryResult.isEmpty()) {
|
36
|
-
return Result.failedResult("No element found: " + query);
|
37
|
-
}
|
38
|
-
Map<String, Object> firstElement = QueryHelper.findFirstVisibleElement(queryResult.getResult());
|
39
|
-
firstElement.remove("class");
|
40
|
-
firstElement.remove("html");
|
41
|
-
final WebView webView = (WebView) firstElement.remove("webView");
|
42
|
-
|
43
|
-
final String firstElementJson = QueryHelper.toJsonString(firstElement);
|
44
|
-
|
45
|
-
|
46
|
-
Map<String, Object> result = (Map<String, Object>) UIQueryUtils.evaluateSyncInMainThread(new Callable() {
|
47
|
-
@Override
|
48
|
-
public Object call() throws Exception {
|
49
|
-
return QueryHelper.executeAsyncJavascriptInWebviews(webView, "set_text.js", firstElementJson, args[2]);
|
50
|
-
}
|
51
|
-
});
|
52
|
-
|
53
|
-
if (result.containsKey("error")) {
|
54
|
-
return Result.failedResult(result.get("details").toString());
|
55
|
-
}
|
56
|
-
return new Result(true);
|
57
|
-
}
|
58
|
-
|
59
|
-
@Override
|
60
|
-
public String key() {
|
61
|
-
return "set_text";
|
62
|
-
}
|
63
|
-
|
64
|
-
}
|