uiautomator
androidApp自动化测试
萌翻天
一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。
展开
-
安卓appUI自动化测试框架(基于uiautomator2.0)
前言:目前比较流行的androidUI自动化实现方式有uiautomator和appium两种uiautomator是google提供的框架,经历了1.0和2.0版本,1.0版本和appium比较像(1.0基本没人用了),2.0版本是基于安卓app单元测试框架来实现的,用androidStudio来写,写在androidTest目录下,用单元测试的方式执行测试,属于android工程,打出...原创 2019-08-30 18:04:01 · 6566 阅读 · 3 评论 -
linux-安装androidSdk配置环境变量
1.下载Android SDKhttp://tools.android-studio.org/index.php/sdk/ 2. 解压Android SDK将android-sdk_r24.4.1-linux.tgz文件复制到Linux 文件系统中的某个目录,我的是目录是/data/test/androidsdk执行命令解压:cd /data/androidsdktar -zvxf android-sdk_r24.4.1-linux.tgz3.配置环境变量在文件/etc/..原创 2020-09-14 14:30:35 · 6132 阅读 · 1 评论 -
uiautomator2.0安装、卸载app
//安装apk,传入路径 public static void installApk(String string) { try { Log.e(TAG, "开始安装app:" + string); mDevice.executeShellCommand("pm install -t -r -d " + string);//-t 允许测试apk被安装 -r 重新安装应用,且保留应用数据 -d 允许降级安装(同一应用低级换高级)...原创 2020-09-09 10:39:30 · 4578 阅读 · 0 评论 -
uiautomator2.0判断app是否安装
public static boolean isAppInstalled(String packageName) { final PackageManager packageManager = context.getPackageManager(); List<PackageInfo> pinfo = packageManager.getInstalledPackages(0); List<String> pName = ne...原创 2020-09-09 10:37:04 · 3752 阅读 · 0 评论 -
uiautomator2.0封装上下左右滑动的方法,适配所有分辨率手机
//向左滑动 public static void swipeLeft(String time) { sleep(1000); int x = mDevice.getDisplayWidth();//获取屏幕的宽 int y = mDevice.getDisplayHeight();//获取屏幕的高 Log.e(TAG, "屏幕分辨率: " + x + " X " + y); mDevice.swipe((in...原创 2020-09-09 10:31:51 · 5356 阅读 · 0 评论 -
uiautomator2.0断言元素上的字符串符合预期
public static void getText(BySelector by, String text) { sleep(2000); mDevice.wait(Until.findObject(by), waitTime); UiObject2 x = mDevice.findObject(by); if (x != null) { if (x.getText().equals(text)) { ...原创 2020-09-09 10:35:02 · 3356 阅读 · 0 评论 -
uiautomator2.0断言元素是否被选中
//断言,元素为选中状态 public static void selectedTrue(BySelector by) { sleep(2000); mDevice.wait(Until.findObject(by), waitTime); UiObject2 x = mDevice.findObject(by); boolean ob = x.isSelected(); Log.e(TAG, by.toStr...原创 2020-09-08 20:14:40 · 4132 阅读 · 0 评论 -
uiautomator2.0元素点击前后,selected选中状态是否不同
public static void selectedBy(BySelector by) { mDevice.wait(Until.findObject(by), waitTime); UiObject2 x = mDevice.findObject(by); boolean ob = x.isSelected(); Log.e(TAG, by.toString() + " 选中状态:" + ob); x.c...原创 2020-09-08 20:13:36 · 3559 阅读 · 0 评论 -
uiautomator2.0调用浏览器打开指定网址
public static void openUrl(String url) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); Log.e(TAG, ...原创 2020-09-08 20:12:27 · 4229 阅读 · 0 评论 -
uiautomator2.0封装点击元素的方法(如果没有找到则滚动屏幕查找,直到找到后点击)
//点击 public static void click(BySelector by) { mDevice.wait(Until.findObject(by), waitTime); UiObject2 x = mDevice.findObject(by); if (x != null) { x.click(); Log.e(TAG, "点击: " + by.toString() + " 成功...原创 2020-09-08 20:10:59 · 4083 阅读 · 0 评论 -
uiautomator2.0注册监听器、移除监听器
//注册监听器,并且点击对应元素 public static void monitor(final String MonitorName, final BySelector by) { mDevice.registerWatcher(MonitorName, () -> { if (mDevice.hasObject(by)) { final UiObject2 x = mDevice.findObject(by...原创 2020-09-08 20:05:21 · 3587 阅读 · 1 评论 -
uiautomator2.0启动app的两种方法
//通过命令启动 public static void openApp(String string) { try { mDevice.executeShellCommand("am start -n " + string);//执行一个shell命令,需要5.0以上手机 mDevice.wait(Until.hasObject(By.pkg(string).depth(0)), 2000); conte...原创 2020-09-08 20:02:28 · 5632 阅读 · 0 评论 -
uiautomator不能访问外部存储空间访的解决方法
1、应用的目标平台为 Android 5.1(API 级别 22)以后,外部存储空间访问权限仅限于访问应用专属目录,将不能在sdcard上随意读写文件,就需要在自己程序的专属空间操作。如果想保存截图或者文件到sdcard上,只能放到外部存储私有目录或者内部存储目录中。2、获取专属目录路径,首先需要获取应用程序的上下文Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();Context原创 2020-09-08 19:57:01 · 3340 阅读 · 0 评论 -
创建基于com.android.support库的uiautomator2.0工程的要点
1、新建工程的时候,要勾选此项2、build.gradle(:app)文件中添加依赖androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'// 指定java编译版本compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.原创 2020-09-08 19:38:42 · 3348 阅读 · 1 评论 -
创建基于androidX库的uiautomator2.0工程的要点
1、新建工程的时候,不要勾选此项2、build.gradle(:app)文件中添加依赖androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'androidTestImplementation 'org.hamcrest:hamcrest-integration:1.3'// 指定java编译版本compileOptions { sourceCompatibility JavaVersio原创 2020-09-08 19:34:21 · 3960 阅读 · 1 评论 -
uiautomator自动化测试框架发展历程(1.0、2.0、androidX)
Uiautomator是由谷歌推出的用于UI自动化测试的工具,经历了3个大版本迭代,以下是各版本差异的总结第一代:uiautomator1.01、Java工程,以jar包的形式存在2、用Eclipse或者idea编写代码3、支持java、python语言4、电脑驱动手机,不能在手机上单独运行,和appium类似5、只能同时在单一app上测试,不能跨APP6、需要继承UiAutomatorTestCase,测试方法需要以test开头。7、使用Maven或Ant构建8、日志使用System.原创 2020-09-08 19:19:27 · 4013 阅读 · 0 评论 -
uiautomator2,封装一个判断界面元素是否存在的方法。
写case的时候,会存在一个问题,就是点击按钮跳转后,不确定跳转到的页面是哪个?这时候就需要一个这样的返回布尔值的方法,来判断某个元素是否存在,从而判断跳转到了哪个页面。//判断text否存在public static boolean judgmentText(String name) { mDevice.wait(Until.findObject(By.text(name)), ...原创 2018-12-19 15:43:08 · 17249 阅读 · 3 评论