很多人看到这个题目我相信他们可能会说,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