mobileperf
https://github.com/alibaba/mobileperf
自动化工具
自动化的工具
- Appium: https://appium.io/
- https://github.com/openatx/uiautomator2 只能测试Android
- airetest https://github.com/AirtestProject/Airtest/blob/master/README_zh.md
- macaca https://macacajs.github.io/zh/guide/#%E5%A4%9A%E7%AB%AF%E6%94%AF%E6%8C%81
appium的使用
server
npm install -g appium@1.19.1 --force
client
参考官方文档 https://appium.io/docs/en/about-appium/getting-started/?lang=zh
配置开发环境
- 创建新项目。
- 配置清华大学镜像站 (配置一次)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Mac
安装 python appium 包pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
https://pypi.org/project/Appium-Python-Client/
pip install Appium-Python-Client
Mac
pip3 install Appium-Python-Client
appium 代码配置
通过配置可以告诉appium 代码执行时使用的是什么方式的引擎
https://appium.io/docs/en/writing-running-appium/caps/index.html
连接手机app
import os
# 导入appium 库中 webdriver 模块
from appium import webdriver
apk = os.path.join(os.path.dirname(os.path.abspath(__file__)),"apk/app-release.apk")
desired_caps = {
'platformName': 'Android', # 测试Android系统
'platformVersion': '7.1.2', # Android版本 可以在手机的设置中关于手机查看
'deviceName': '127.0.0.1:62001', # adb devices 命令查看 设置为自己的设备
'automationName': 'UiAutomator2', # 自动化引擎
'app': apk # app 文件路径
}
# 创建 webdriver 实例 连接手机
webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
启动 appium server, 命令行中执行命令
appium
需要注意的是:
使用手机测试的话,启动appium 的时候需要在手机上安装 appium setting 有些手机有安全选项 需要手动去确认一下。
元素定位
打开Android Sdk\tools\bin 目录下的 uiautomatorviewer.bat 文件
打开之后 点击元素获取按钮
id 定位 ,元素有resouce-id 属性
import os
# 导入appium 库中 webdriver 模块
from appium import webdriver
import time
apk = os.path.join(os.path.dirname(os.path.abspath(__file__)),"apk/app-release.apk")
desired_caps = {
'platformName': 'Android', # 测试Android系统
'platformVersion': '7.1.2', # Android版本 可以在手机的设置中关于手机查看
'deviceName': '127.0.0.1:62001', # adb devices 命令查看 设置为自己的设备
'automationName': 'UiAutomator2', # 自动化引擎
'app': apk # app 文件路径
}
# 创建 webdriver 实例 连接手机 本地appium 服务器端地址 http://127.0.0.1:4723/wd/hub
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(4)
# image btn
image_btn = '//android.view.ViewGroup[@resource-id="org.cnodejs.android.md:id/toolbar"]/android.widget.ImageButton'
# 根据xpath元素定位 点击
driver.find_element_by_xpath(image_btn).click()
# 等待动画加载完
time.sleep(1)
avatar_id = 'org.cnodejs.android.md:id/tv_login_name'
driver.find_element_by_id(avatar_id).click()
# a3be9c02-153f-410a-99f2-7a1335d2d6e0 http://47.100.175.62:3000/
# 输入文本值
driver.find_element_by_id('org.cnodejs.android.md:id/edt_access_token').send_keys("a3be9c02-153f-410a-99f2-7a1335d2d6e0")
# 点击登录
driver.find_element_by_id('org.cnodejs.android.md:id/btn_login').click()