相关软件
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),我们将立即处理