多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

uiautomator +python实现安卓自动化测试

更新时间:2022-04-11 14:24:30 作者:多测师 浏览:236

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

uiautomator +python实现安卓自动化测试

  安装起来很简单

  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)

  以上内容为大家介绍了uiautomator +python实现安卓自动化测试,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部