ui Automator编写app自动化
时间: 2023-06-18 15:03:01 浏览: 246
uiautomator2-安卓自动化-安卓驱动-appium-安卓手机自动化-appium安卓版驱动
UiAutomator是Android平台自带的测试框架,可以用于编写Android应用程序的UI自动化测试用例。以下是编写app自动化的一般步骤:
1. 首先,需要在Android Studio中创建一个新的项目并选择“空活动”。
2. 接下来,需要在项目中添加所需的依赖项。可以在build.gradle文件中添加以下依赖项:
```groovy
dependencies {
androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
}
```
3. 创建一个测试类,并导入必要的类:
```java
import androidx.test.core.app.ActivityScenario;
import androidx.test.espresso.matcher.ViewMatchers;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.uiautomator.By;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.UiObject2;
import androidx.test.uiautomator.UiSelector;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
```
4. 编写测试用例,并使用UiDevice类与应用程序进行交互。例如,下面的示例代码将启动应用程序并单击按钮:
```java
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
private UiDevice mDevice;
@Before
public void setUp() throws Exception {
mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
mDevice.pressHome();
// Wait for launcher
final String launcherPackageName = mDevice.getLauncherPackageName();
assertThat(launcherPackageName, notNullValue());
mDevice.wait(Until.hasObject(By.pkg(launcherPackageName).depth(0)), 5000);
// Launch the app
Context context = InstrumentationRegistry.getInstrumentation().getContext();
final Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.example.myapp");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
// Wait for the app to appear
mDevice.wait(Until.hasObject(By.pkg("com.example.myapp").depth(0)), 5000);
}
@Test
public void testButton() {
UiObject2 button = mDevice.wait(Until.findObject(By.res("com.example.myapp:id/my_button")), 5000);
assertThat(button, notNullValue());
button.click();
}
}
```
5. 运行测试用例。可以通过在终端中运行以下命令来运行测试:
```
./gradlew connectedAndroidTest
```
这将启动模拟器/设备并运行测试用例。
总之,使用UiAutomator编写app自动化测试用例需要一定的编程经验,并且需要对Android应用程序的UI结构有一定的了解。
阅读全文