,各位前辈,通过Appium Python Unittests框架 实现简单的自动化操作,第一次操作,内容需要改进,欢迎提出宝贵的建议,让我们一起学习!
python pycharm;
appium;
JavaJDK;
adb;
android-sdk;
派健康;
Redmi K20 Pro;
def setUp(self) -> None: self.desired_caps = { # 被测手机系统 "platformName": "Android", # 被测手机的版本号 "platformVersion": "11", # 被测手机名称 "deviceName": "Redmi_K20_Pro", # 指定被测软件的包名 "appPackage": "com.lstech.rehealth", # 指定要打开的APP哪个页面? "appActivity": ".mainpage.MainPageActivity", "automationName": "Uiautomator2", # 设置apk的重置策略(noReset--不停止应用程序,不清除应用数据,不卸载apk) "noReset": True, # 设置命令的超时间 "newCommandTimeout": 600000, # 中文输入设置,appium默认不支持中文输入 "unicodeKeyboard": True, "resetKeyboard": True, } self.driver = webdriver.Remote('http://localhost:4723/wd/hub', self.desired_caps)
通过正常流程进行OTA并验证每次升级是否成功。
def test_OTA_RP(self): ##开始OTA操作 self.Demo_01() #调用函数 判断设备连接是否正常 try: self.driver.find_element('xpath', '//*[@text="连接设备"]') except NoSuchElementException: print(正常连接) time.sleep(3) self.driver.find_element('id', 'com.lstech.rehealth:id/rom_version_layout').click() # 点击 固件版本 time.sleep(3) # 重复升级次数 b = 10 print("重复升级次数(正常升级):", b) a = 0 while a < b: time.sleep(1) WebDriverWait(self.driver, 60, 1).until( lambda diver: self.driver.find_element('xpath', '//*[@text="立即升级"]')) # 点击立即升级 self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click() time.sleep(1) self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’ a = a 1; print("第", a, "次升级") else: print(升级完成) else: print("断开连接")
点击升级后,关闭手机蓝牙,再次打开,验证设备能否正常升级
def test_OTA_BT(self): # ##开始OTA操作 self.Demo_01() #调用函数 time.sleep(3) self.driver.find_element('id', 'com.lstech.rehealth:id/rom_version_layout').click() # 点击 固件版本 time.sleep(3) # 重复升级次数 b = 10 print("重复升级(断蓝牙升级) ):", b) a = 0 while a < b: time.sleep(1) WebDriverWait(self.driver, 60, 1).until( lambda diver: self.driver.find_element('xpath', '//*[@text="立即升级"]')) # 点击立即升级 self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click() # 点击立即升级 time.sleep(1) self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’ time.sleep(2) self.driver.swipe(574, 16, 574, 531) # 拉出蓝牙框 self.driver.find_element('id', 'com.android.systemui:id/big_tile_1').click() # 关闭蓝牙 time.sleep(1) self.driver.find_element('id', 'com.android.systemui:id/big_tile_1').click() # 打开蓝牙 self.driver.swipe(521, 2127, 521, 1813) # 回到派健康页面 time.sleep(2) self.driver.find_element('xpath', '//android.widget.TextView[@bounds="[0,96][172,240]"]').click() # 点击OTA页面 左上角 返回按钮 # 判断设备是否连接 try: # 显示等待30s,每0.5秒检查一次 WebDriverWait(self.driver, 30, 0.5).until( lambda diver: self.driver.find_element('xpath', '//*[@text="连接设备"]')) # 检查设备是否正常连接 except NoSuchElementException: print("连接成功") else: self.driver.find_element('xpath', '//*[@text="连接设备"]').click() # 点击连接设备 try: # 显示等待10s,每0.5秒检查一次 time.sleep(0.5) WebDriverWait(self.driver, 10, 0.5).until( lambda diver: self.driver.find_element('xpath', '//*[@text="去跳绳"]')) # 判断点击 连接设备后 连接是否恢复 except NoSuchElementException: time.sleep(1) self.driver.find_element('xpath', '//*[@text="连接设备"]').click() # 点击连接设备 time.sleep(2) self.driver.find_elemnt('id', 'com.lstech.rehealth:id/rom_version_layout').click() # 点击固件版本
time.sleep(2)
self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click() # 点击 立即升级
time.sleep(1)
# driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’
try:
# 显示等待10s,每0.5秒检查一次
time.sleep(0.5)
WebDriverWait(self.driver, 5, 0.5).until(
lambda diver: self.driver.find_element('xpath', '//*[@text="设备升级中,请勿充电"]'))
except NoSuchElementException:
self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click() # 点击 立即升级
self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’
else:
self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’
else:
time.sleep(1.5)
self.driver.find_element('id', 'com.lstech.rehealth:id/rom_version_layout').click() # 点击固件版本
time.sleep(2)
self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click() # 点击 立即升级
try:
# 显示等待10s,每0.5秒检查一次
time.sleep(0.5)
WebDriverWait(self.driver, 5, 0.5).until(
lambda diver: self.driver.find_element('xpath', '//*[@text="设备升级中,请勿充电"]'))
except NoSuchElementException:
self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click() # 点击 立即升级
self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’
else:
self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’
a = a + 1;
print("第", a, "次升级")
else:
print('升级完成')
当点击完升级后,把APP进程杀掉,并再次打开,来验证设备是否能够正常升级
def test_OTA_Close(self):
##开始进行OTA操作
self.Demo_01() #调用函数
#判断是否正常连接
try:
self.driver.find_element('xpath', '//*[@text="连接设备"]')
except NoSuchElementException:
print('杀进程升级')
time.sleep(3)
self.driver.find_element('id', 'com.lstech.rehealth:id/rom_version_layout').click() # 点击 固件版本
time.sleep(3)
# 重复升级次数
b = 10
print("重复升级次数(杀进程升级):", b)
a = 0
while a < b:
time.sleep(1)
WebDriverWait(self.driver, 60, 1).until(
lambda diver: self.driver.find_element('xpath', '//*[@text="立即升级"]')) # 点击立即升级
self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click()
time.sleep(1)
self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’
time.sleep(6)
###杀进程
self.driver.quit()
# 重新打开APP
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', self.desired_caps)
#杀进程后,重新选择需要进行OTA的设备
self.Demo_01()
try:
self.driver.find_element('xpath', '//*[@text="连接设备"]')
except NoSuchElementException:
time.sleep(3)
self.driver.find_element('id', 'com.lstech.rehealth:id/rom_version_layout').click() # 点击 固件版本
time.sleep(1.5)
WebDriverWait(self.driver, 60, 1).until(
lambda diver: self.driver.find_element('xpath', '//*[@text="立即升级"]')) # 点击立即升级
self.driver.find_element('id', 'com.lstech.rehealth:id/fota_btn').click()
time.sleep(1)
self.driver.find_element('id', 'com.lstech.rehealth:id/lib_alertdialog_button1').click() # 点击 ‘确定’
a = a + 1;
print("第", a, "次升级")
else:
print('升级完成')
else:
print("断开连接")
def Demo_01(self):
##开始进行OTA操作
self.driver.find_element('id', 'com.lstech.rehealth:id/ll_bottom_me').click() # 点击 我 的页面
self.driver.swipe(683, 798, 683, 1330) # 下拉 我的设备
time.sleep(1)
self.driver.find_element('id', 'com.lstech.rehealth:id/device_image').click() # 点击需要进行OTA的设备 (需 判断设备是否正常连接)
import os
import time
import unittest
from HTMLTestRunner import HTMLTestRunner
test_dir = 'T40L'
discover = unittest.defaultTestLoader.discover(start_dir='T40L', pattern="OTA_New.py")
if __name__ == "__main__":
report_dir = './test_report'
os.makedirs(report_dir, exist_ok=True)
now = time.strftime("%Y-%m-%d %H-%M-%S")
report_name = '{0}/{1}.html'.format(report_dir, now)
with open(report_name, 'wb')as f:
runner = HTMLTestRunner(stream=f, title="测试报告", description="本次测试内容包含--跳绳设备通过 派健康APP 进行OTA升级操作[包含:正常升级,开关蓝牙升级,杀进程升级]")
runner.run(discover)