Python实现安卓APP自动化测试

发表于:2024-2-08 07:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:测试要用手    来源:CSDN

  相关软件
  PC端:
  系统:MAC
  python3.9.16
  iuautomator2(该工具依赖adb)
  介绍:uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。它本来是Google提供的一个自动化测试的Java库,后来发展了python-uiautomator2,封装了谷歌自带的uiautomator测试框架,提供便利的python接口,用它可以很便捷的编写python脚本来实现app的自动化测试。
  adb
  介绍:adb是用来连接安卓手机和PC端的桥梁,要有adb作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作;(用这个工具可以直接操作管理android模拟器或者真实的android设备)
  移动端:
  ATX-agent
  介绍:运行在手机的内部,为手机增加了远程控制,自动化的功能。atx-server最重要的功能,是将atx-agent汇总到一个网页上展示,并提供一个API可以获取所有设备的列表。
  软件安装
  1:python3.9.16 安装
  使用adaconda安装python   conda create -n env_name python=3.9
  2: iuautomator2安装
  pip install uiautomator2
  3:adb安装
  mac:
  brew install android-platform-tools
  windows:
  https://wwd.lanzoub.com/iy58p07rt3re  下载后将目录地址写入环境变量, 虚拟器需要打开开发者权限,使用adb connect 127.0.0.1:16384 命令链接虚拟机。
  4: 移动端ATX-agent安装
  执行命令前需要确保adb已安装成功
  python -m uiautomator2 init
  成功后移动端会显示ATX  APP
  测试内容
  1:推送淘宝apk到移动端
  2:安装appp
  3:打开app
  注意:由于 uiautomator2 默认content_timeout为3秒 需要修改超时时间否则推送大文件会失败
  修改方法:https://www.cnblogs.com/fuchenjie/p/17305703.html
  import uiautomator2 as u2
  class AndroidTest(object):
      device = None  # 已连接的手机对象
      # wait_timeout = 300.0  # 链接超时时间
   
      def _get_pkg_name(self):
          """获取当前已打开的app包名"""
          pkg_name = self.device.app_current()
          return pkg_name
   
      def connection_by_wifi(self, ip):
          """通过同局域网的wifi链接手机"""
          self.device = u2.connect_wifi("ip")
          # self.device.wait_timeout = self.wait_timeout
          print(self.device.device_info)
   
      def connection_by_num(self, num):
          """通过usb链接手机后通过手机序列号连接手机"""
          self.device = u2.connect(num)
          # self.device.wait_timeout = self.wait_timeout
          print(self.device.device_info)
   
      def install_app(self, apk_url):
          """下载并安装apk"""
          print("start install %s" % apk_url)
          self.device.app_install(apk_url)
          print("end install %s" % apk_url)
   
      def uninstall(self):
          """卸载app"""
          # 获取当前打开的app的包名
          pkg_name = self._get_pkg_name()
          self.device.app_uninstall(pkg_name)
   
      def open_app(self, app_name):
          """通过app名称打开app, 点击app进入"""
          self.device(text=app_name).click()
   
      def open_app_by_pkg_name(self, pkg_name=""):
          """通过pkg名打开app"""
          if not pkg_name:
              pkg_name = self._get_pkg_name()
          self.device.app_start(pkg_name)
   
      def close_app(self, pkg_name=""):
          """关闭app"""
          if not pkg_name:
              pkg_name = self._get_pkg_name()
          self.device.app_stop(pkg_name)
   
      def clear_app(self, pkg_name=""):
          """清空app"""
          if not pkg_name:
              pkg_name = self._get_pkg_name()
          self.device.app_clear(pkg_name)
   
      def screenshot(self, img_path):
          """手机截屏"""
          self.device.screenshot(img_path)
   
  if __name__ == "__main__":
      my_android = AndroidTest()
      sg = u"/xxxxx/PycharmProjects/douyin/pkg/taobao.apk"
      my_android.device.push(sg, "/data/")
      
      my_android.install_app(sg)
      my_android.open_app("淘宝")
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号