资讯详情

Appium+Python+Unittests框架 实现设备通过APP进行自动化OTA升级操作

,各位前辈,通过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)

标签: t40fm扭矩传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台