uiautomator +python 实现安卓自动化

很多人看到这个题目我相信他们可能会说,uiautomator不是java开发的吗?python怎么用呢,其实呢 ,一开始我也是这么想的,看了金阳光老师的视频,也是用java写的,我表示不服,我要科学上网去查查看,结果还真有,感谢国内 贺晓聪大神进行的封装。github地址:https://github.com/xiaocong/uiautomator ,而且给出来了详细的教程,毫不犹豫的给大神点个赞。

  安装起来很简单

pip install uiautomator

我们来看下官方给的第一个小demo

from uiautomator import device as d
d.screen.on()
d(text="Clock").click()

小试一下,用的感觉还不错呢。

需要安装安装sdk 和ANDROID_HOME,并且安卓设备可以通过adb链接,

如果就一个设备导入下面的

from uiautomator import device as d如果多个设备需要用
from uiautomator import Device

d = Device(‘014E05DE0F02000E‘)
from uiautomator import Device

d = Device(‘014E05DE0F02000E‘, adb_server_host=‘192.168.1.68‘, adb_server_port=5037)

下面我们来看下支持的定位方式

text, textContains, textMatches, textStartsWith
className, classNameMatches
description, descriptionContains, descriptionMatches, descriptionStartsWith
checkable, checked, clickable, longClickable
scrollable, enabled,focusable, focused, selected
packageName, packageNameMatches
resourceId, resourceIdMatches
index, instance
几乎所有的定位方式都支持,比appium支持的定位方式多不少,个人感觉。有兴趣的可以去看下官方给的api。下面呢我利用我们公司的app做了一个demo,使用ddt数据驱动,定位方式呢,就使用id。
from uiautomator import  device as d
import  unittest,os,ddt,time
from uiautomotpr import  HTMLTestRunner
data=[{‘username‘:15964636199,‘password‘:‘111111‘},{‘username‘:15964636199,‘password‘:‘liwanlei‘},{‘username‘:15964636199,‘password‘:‘liwanlei123‘}]
def assert_i(cm):
    if cm.exists:
        return True
    else:
        return False
@ddt.ddt
class TestaixuetangCase(unittest.TestCase):
    def setUp(self):
        cmd = ‘adb shell am  start   com.aixuetang.teacher/.activities.LoginActivity ‘
        os.system(cmd)
    def tearDown(self):
        cmd=‘adb shell am force-stop com.aixuetang.teacher‘
        os.system(cmd)
    @ddt.data(*data)
    def testlogin(self,data):
        d(resourceId=‘com.aixuetang.teacher:id/et_username‘).set_text(data[‘username‘])
        d(resourceId=‘com.aixuetang.teacher:id/et_password‘).set_text(data[‘password‘])
        d(resourceId=‘com.aixuetang.teacher:id/tv_login‘).click()
        assert_m=assert_i(cm=d(resourceId=‘com.aixuetang.teacher:id/tv_login‘))
        self.assertTrue(assert_m)
if __name__==‘__main__‘:
    suite = unittest.TestSuite()
    now = time.strftime(‘%Y-%m%d‘, time.localtime(time.time()))
    report_dir = r‘%s.html‘ % now
    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestaixuetangCase))
    re_open = open(report_dir, ‘wb‘)
    runner = HTMLTestRunner.HTMLTestRunner(stream=re_open, title=‘爱学堂demo by uiautomator‘, description=‘测试结果‘)
    runner.run(suite)

我们来看下运行结果

三个测试用例28秒搞定,速度还算快,更多的应用还在探索中,

 这里作者只是用了一个小demo, 其实网上还有很多的例子,https://my.oschina.net/yangyanxing/blog/498403 这个例子就不错。以后继续探索吧, 

欢迎大家可以来和我一起学习,qq群:194704520 ,欢迎大家可以前来一起来探索美妙的IT人生,探索iT技术的奥妙,扯淡荒废的光阴。

赠言: 你在休息的时候,别人在进步,你在打闹的时候别人在进步。 不要羡慕别人的成功,因为别人的成功付出了自己汗水
时间: 2024-10-09 21:24:27

uiautomator +python 实现安卓自动化的相关文章

安卓自动化业务层测试接口

安卓自动化业务层测试接口 阅读前需知的基本知识: 1. uiautomator 脚本的执行通过shell命令调起执行,向执行的方法传递参数也是通过shell命令 2  调起的执行方法所在类必须要继承UIATestCasel类 3.  调起方法内部,职能通过bundle获取外部传递的参数,而不是通过函数参数的方式传递 抛出问题: 在新的自动化测试框架中,业务层属于API层级,非继承于UIATestCasel类(com.android.uiautomator.testrunner.UiAutomat

Selenium+Python+Eclipse网页自动化集成环境配置(附简单的测试程序)

最近公司在给我们培训,主要是网页自动化测试的,现在的工作每天都是测APP,刚刚入门,不过,当我看了别人写的bug之后,就觉得不会觉得能够发现bug多么多么的厉害了. 前两周的时间一直在搭建自动化测试的环境,由于白天上班没有时间做练习,只能下班之后才有时间自己学习一下,苦逼啊.每天都是9点多才从公司回宿舍,但说实在的,这样的日子确实过得很充实,不管怎样,这么好的一个工作环境一定要好好珍惜,学多点东西,挣多点钱回家孝敬一下老爸,他自己一个人扛起我们整个家庭,也确实不容易的.好了,废话不多说了,直接进

Python 开发安卓Android及IOS应用库Kivy安装尝试

Python 开发安卓Android及IOS应用库Kivy安装尝试: 先来看看这货可以用来制作什么应用: Create a package for Windows Create a package for Android Creating packages for OS X Create a package for IOS 逆天的节奏啊,虽然600+页的英文文档,python3+还在on the way ,觉得这货潜力无穷啊. 当然,缺点就是要安装各种环境依赖,尤其是在win7平台下,估计会比较

浅析Python进行接口自动化

python进行接口自动化需要依赖于requests库,首先如果没有下载该库,使用pip进行下载到本地:1.进入D:\软件安装文件夹\PYTHON\Scripts目录下(ps:这个看个人安装python位置),使用cmd进入命令界面,输入pip install requests,完成后即可使用 参考示例: 期间自己调测可以使用fiddler抓包进行调试,后面再研究使用unitest测试框架进行校验等 原文地址:https://blog.51cto.com/12390959/2369129

Python语言web自动化通用脚本

web自动化脚本中有一部分代码是可以借鉴的,我们只需要将这个框架移植到当前项目中,修改部分参数即可.比如日志类.driver对象.元素基本操作等. 以商城项目为例,以下就是相关代码. base包(内含日志.driver对象.页面元素操作): 页面元素操作(base.py): import timefrom time import sleep import pagefrom selenium.webdriver.support.wait import WebDriverWaitfrom base.

5.Appium 安卓自动化(UIAutomator)

简介 Android 4.3发布的时候包含了一种新的测试工具–uiautomator,uiautomator是用来做UI测试的.也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期.比如 登陆界面 分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等. 官方介绍如下: UI Automator is a UI testing framework suitable for cross-app functional UI testing across sy

python+requests接口自动化完整项目设计源码

前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违法职业道德了,就算别人分享了,也只适用于本公司内部的业务. 所以用例的代码还是得自己去一个个写,我只能分享项目框架,只能帮你们到这了. 一.项目结构 1.新建一个工程(一定要创建工程),工程名称自己定义,如:yoyo_jiekou 2.在工程的跟目录新建一个脚本:run_main.py,用来执行全部用例 3.在工程下创建以下几个pakage包: --case:这个包放test开头的测试用例,也可以放一些封装

UIautomator Python测试

#!/usr/bin/env python # -*- coding: utf-8 -*- import unittest from mock import MagicMock, patch import os import subprocess from uiautomator import Adb class TestAdb(unittest.TestCase): def setUp(self): self.os_name = os.name def tearDown(self): os.n

ShutIt:一个基于 Python 的 shell 自动化框架

ShutIt是一个易于使用的基于shell的自动化框架.它对基于python的expect库(pexpect)进行了包装.你可以把它看作是"没有痛点的expect".它可以通过pip进行安装. Hello World 让我们从最简单的例子开始吧.创建一个名为example.py的文件: import shutit session = shutit.create_session('bash') session.send('echo Hello World', echo=True) 运行这