使用方法基本说明:https://www.cnblogs.com/mliangchen/p/5114149.htmlhttps://blog.csdn.net/Eugene_3972/article/details/76629066

环境准备:https://www.cnblogs.com/keeptheminutes/p/7083816.html

简单实例

1.自动化安装与卸载 :https://my.oschina.net/yangyanxing/blog/498403

2.自动化登录测试 :http://www.cnblogs.com/leiziv

注:安卓6.0以上的手机不会自动安装app-uiautomator.apk和app-uiautomator-test.apk,需要手动安装,否则报错ioerror RPC server not started

uiautomator +python+HTMLTestRunner 安卓UI自动化实现

#coding:utf-8
from uiautomator import Device
import os
import unittest
from HTMLTestRunner import HTMLTestRunner
import time d=Device('127.0.0.1:62001')
print d.info class TestEle(unittest.TestCase):
def setUp(self):
cmd = 'adb shell am start me.ele/me.ele.application.ui.home.HomeActivity'
os.system(cmd)
cmd = 'adb shell am start me.ele/me.ele.shopping.ui.search.SearchActivity'
os.system(cmd) def tearDown(self):
cmd='adb shell am force-stop me.ele'
os.system(cmd) def testSearch(self):
d(resourceId='me.ele:id/editor').set_text('coco')
d(resourceId='me.ele:id/search').click()
d.screenshot(r"E:\code\auto\ele_search.png")
self.assertTrue(d(text="coco").exists) if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestEle))
now = time.strftime('%Y-%m-%d', time.localtime(time.time()))
test_dir = r'E:\code\auto'
filename = test_dir + '/' + now + 'test_result.html'
fp = file(filename,'wb')
runner = HTMLTestRunner(stream=fp, title='ele demo by uiautomator', description= u'测试结果')
runner.run(suite)

注:

1.通过adb devices获取设备名,127.0.0.1:62001是夜神模拟器的设备名

2.通过adb shell dumpsys window | findstr mCurrentFocus命令获取apk应用名和.MainActivity,如me.ele/me.ele.application.ui.home.HomeActivity

3.通过'adb shell am start  me.ele/me.ele.application.ui.home.HomeActivity' 启动模拟器上app的activity,使用真机无法启动,可能是app应用不允许外部访问

C:\Users\admin>adb shell am start  me.ele/me.ele.application.ui.home.HomeActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=me.ele/.application.ui.home.HomeActivity }
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10000000 cmp=me.ele/.application.ui.home.HomeActivity } from null (pid=21101, uid=2000) not exported from uid 10046
        at android.os.Parcel.readException(Parcel.java:1468)
        at android.os.Parcel.readException(Parcel.java:1422)
        at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:2150)
        at com.android.commands.am.Am.runStart(Am.java:694)
        at com.android.commands.am.Am.onRun(Am.java:272)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
        at com.android.commands.am.Am.main(Am.java:78)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
        at dalvik.system.NativeStart.main(Native Method)

4.通过uiautomatorviewer获取resourceId

运行结果:d(text="coco").exists包含了搜索栏的'coco',故而断言成功

uiautomator +python 安卓UI自动化尝试的更多相关文章

  1. 使用appium+python做UI自动化的demo

    使用appium+python做UI自动化的demo 案例使用的知乎app,下载最新的知乎apk,存在了电脑上,只需要配置本机上app目录,不需要再配置appPackage和appActivity # ...

  2. 谷歌安卓UI自动化测试策略

    中文翻译版: 为了使大家确信"应做单元测试,就一定能做单元测试",谷歌测试工程师Mona El Mahdy专门写了一篇博客,提出了几种执行安卓应用用户界面单元测试的方法.Mahdy ...

  3. 【Python】UI自动化-1

    一.安装selenium和环境配置 1 pip install selenium 2 三个驱动文件放到d:盘根目录 3 安装火狐版本33 4 安装插件:selenium ide\firebug\fir ...

  4. Python实现UI自动化

    1.   Selenium2 + WebDriver API 2.   unittest单元测试框架 3.   HTMLTestRunner.html测试报告 4.   自动化测试模型介绍 5.    ...

  5. python WEB UI自动化在日期框中动态输入当前日期

    要在日期框中输入当前日期,如下图 代码为 本想用最简单的方法,直接用sendkeys发送当前日期,如下: current_time=time.strftime('%Y-%m-%d',time.loca ...

  6. Android_UiAutomator(安卓UI自动化)环境搭建

    一.配置JDK环境变量 1.新建系统变量JAVA_HOME,然后输入引号内的内容(JDK安装目录) "C:\Program Files\Java\jdk1.8.0_51"      ...

  7. python+selenium UI自动化不同浏览器之间的切换

    class register(): ROBOT_LIBRARY_SCOPE = 'GLOBAL' def __init__(self): pass # m默认打开chrome def open_bro ...

  8. Python Selenium 搭建Web UI自动化

    Python搭建UI自动化环境 下载Python3 Python官网 PyCharm 环境配置 安装Python 勾选Add Python to PATH,一直下一步. 验证:CMD输入Python ...

  9. 测试自动化:java+selenium3 UI自动化(1) - 环境搭建

    1.前言 我大概是在2012年第一次正式接触到自动化测试,那个时候跟随我的团队一起,就当时项目的UI自动化尝试做出了探索. 在我离开那家公司的时候,我们的自动化测试体系仍然难言完美,但是也已经达到了非 ...

随机推荐

  1. 【洛谷4158/BZOJ1296】[SCOI2009]粉刷匠(动态规划)

    题目:洛谷4158 分析: 这题一看就是动态规划. 可以看出,如果每个木条粉刷的次数是固定的,那么这些木条是互不干扰的,因此对于每个木条可以通过dp来求出把T次中的j次分配给这个木条时可以获得的最大正 ...

  2. ansible基础知识(二)

    软件相关模块 yum yum和rpm的区别 rpm: (Redhat package manager)RPM管理支持事务机制.增强了程序安装卸载的管理. yum: YUM被称为 Yellow dog ...

  3. 最新省市区划分码code

    爬取国家统计局省市区code 提供php爬取脚本以及json和sql https://github.com/zzDylan/area-code 觉得好用给个star,3q

  4. 查询分析器执行SQL很快但是ado.net很慢:请为你的SQLparameter设置DbType

    我们都知道,参数化查询可以处理SQL注入,以及提高查询的效率,因为参数化查询会使MSSQL缓存查询的计划. 但是会出现一个问题:有的时候参数化查询比直接拼接sql字符串效率低好多,甚至是查询超时. 原 ...

  5. [ 51Nod 1327 ] 棋盘游戏

    \(\\\) \(Description\) 给出一张\(N\times M\)的棋盘,每个格子最多放置一个棋子,一个合法的放置方案需满足: 每列至多放置一个棋子 对于第\(i\)行,前\(L_i\) ...

  6. 百度之星2017初赛B1006 小小粉丝度度熊

    思路: 考虑到补签卡一定是连续放置才更优,所以直接根据起始位置枚举.预先处理区间之间的gap的前缀和,在枚举过程中二分即可.复杂度O(nlog(n)). 实现: #include <iostre ...

  7. JS——旋转木马

    1.opacity和zIndex的综合运用 2.样式的数组的替换:向右边滑动---删除样式数组第一位并在数组最后添加:向左边滑动---删除样式数组最后一位并在数组前添加 3.开闭原则,只有当回调函数执 ...

  8. Linux 一些小知识点汇总(持续更新....)

    一.符号 1.$@:传递的参数. 2.$# :传递参数的数量. 3.$?:指上一次执行命令后的返回值.一般0表示运行成功. 补充:$?只表示上一个命令执行后的退出状态,当命令执行后,又执行了其他命令, ...

  9. (转)postgis常用函数介绍(一)

    http://blog.csdn.net/gisshixisheng/article/details/47701237 概述: 在进行地理信息系统开发的过程中,常用的空间数据库有esri的sde,po ...

  10. C# 统计字符串出现的个数

    string str1 = "123AAA456AAAA789AAAAAAA1011"; string str2 = "123456789AAA23456789AAAA3 ...