diff options
-rw-r--r-- | build.gradle | 7 | ||||
-rw-r--r-- | src/main/AndroidManifest.xml | 1 | ||||
-rw-r--r-- | src/main/java/com/google/android/mobly/snippet/bundled/UiautomatorSnippet.java | 48 |
3 files changed, 53 insertions, 3 deletions
diff --git a/build.gradle b/build.gradle index b0bcbfd..12c3ed8 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { } plugins { - id "com.github.sherter.google-java-format" version "0.8" + id "com.github.sherter.google-java-format" version "0.9" } repositories { @@ -36,7 +36,7 @@ android { defaultConfig { applicationId "com.google.android.mobly.snippet.bundled" - minSdkVersion 15 + minSdkVersion 18 // Set target to 22 to avoid having to deal with runtime permissions. targetSdkVersion 22 versionCode 1 @@ -74,7 +74,8 @@ artifacts { } dependencies { - implementation 'androidx.test:runner:1.2.0' + implementation 'androidx.test.uiautomator:uiautomator:2.2.0' + implementation 'androidx.test:runner:1.3.0' implementation 'com.google.android.mobly:mobly-snippet-lib:1.2.0' implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.google.guava:guava:27.0.1-android' diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 21de6d7..bd59ce5 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -47,6 +47,7 @@ com.google.android.mobly.snippet.bundled.NetworkingSnippet, com.google.android.mobly.snippet.bundled.FileSnippet, com.google.android.mobly.snippet.bundled.SmsSnippet, + com.google.android.mobly.snippet.bundled.UiautomatorSnippet, com.google.android.mobly.snippet.bundled.WifiManagerSnippet, com.google.android.mobly.snippet.bundled.StorageSnippet" /> </application> diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/UiautomatorSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/UiautomatorSnippet.java new file mode 100644 index 0000000..06b8b0c --- /dev/null +++ b/src/main/java/com/google/android/mobly/snippet/bundled/UiautomatorSnippet.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2020 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.google.android.mobly.snippet.bundled; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.uiautomator.UiDevice; +import com.google.android.mobly.snippet.Snippet; +import com.google.android.mobly.snippet.rpc.Rpc; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +/** + * Snippet class exposing Android APIs in Uiautomator. + */ +public class UiautomatorSnippet implements Snippet { + + private static final UiDevice device = + UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); + + @Rpc(description = "Dumps UI hierarchy XML and return as string.") + public String uiautomatorDumpWindowHierarchy() throws IOException { + String res = ""; + OutputStream outStream = new ByteArrayOutputStream(); + device.dumpWindowHierarchy(outStream); + res = outStream.toString(); + outStream.close(); + return res; + } + + @Override + public void shutdown() { + } +} |