一、引言
- 描述:UI Automator 是一个界面测试框架,适用于整个系统上以及多个已安装应用间的跨应用功能界面测试。这里我将会拿QQ软件的说说模块进行测试。
- 知识点:Ui Automator
- 难度:初级
- 效果
二、了解(Android官方文档)
1、UiDevice 类
用于在运行目标应用的设备上访问和执行操作,同时还能进行以下操作:
- 改变设备的旋转。
- 按硬件键,如“音量调高按钮”。
- 按返回、主屏幕或菜单按钮。
- 打开通知栏。
- 截取当前窗口的屏幕截图。
2、UI Automator API
- UiCollection:枚举容器的界面元素,目的是为了计数,或者按可见文本或内容说明属性来定位子元素。
- UiObject:表示设备上可见的界面元素。
- UiScrollable:支持搜索可滚动界面容器中的项目。
- UiSelector:表示对设备上的一个或多个目标界面元素的查询。
- Configurator:可让您设置用于运行 UI Automator 测试的关键参数。
3、UI Automator 查看器
查看器是非常重要的工具,主要作用:获取控件ID、Class等信息,用于配合UiDevice 类来进行测试。
Ui Automator Viewer 工具位于 android-sdk/tools/bin 目录中。文章来源:https://www.toymoban.com/news/detail-517107.html
三、使用
1、依赖
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
2、代码
如第一章效果图,给出代码文章来源地址https://www.toymoban.com/news/detail-517107.html
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
UiDevice device;
@Before
public void init() {
// 初始化UiDevice实例
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
// 从主屏幕开始获取软件包名
device.pressHome();
//depth(0) 跳转到主屏幕
String launcherPackage = device.getLauncherPackageName();
device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
1000);
//获取Context 跳转到com.example.xch.android001包,进入android001软件
Context context = ApplicationProvider.getApplicationContext();
Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.tencent.mobileqq");
// Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.sankuai.meituan"); // 美团测试
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
device.wait(Until.hasObject(By.pkg("com.tencent.mobileqq").depth(0)),0);;
}
@Test
public void test() throws InterruptedException {
//自动化发表说说4
device.findObject(By.text("动态")).click(); // 通过文字点击控件
device.findObject(By.res("com.tencent.mobileqq","uae")).click(); // 通过id点击控件
Thread.sleep(200); // 延迟,给onCreate时间
device.findObject(By.res("com.tencent.mobileqq","dsj")).click();
Thread.sleep(200);
device.findObject(By.res("com.tencent.mobileqq","hkl")).click();
Thread.sleep(200);
device.findObject(By.res("com.tencent.mobileqq","itv")).setText("云端new守夜人\nAndroid uiautomator 测试");
device.findObject(By.res("com.tencent.mobileqq","ivTitleBtnRightText")).click();
}
}
到了这里,关于【Android自动化测试】Ui Automator技术(以对QQ软件自动发说说为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!