• 【Python】AppUI自动化—appium自动化开发环境部署、APP测试案例(17)上


    一.appium简介

    1.什么是appium

    • Appium是一个跨平台移动端自动化测试工具,可以为IOS和Android平台创建自动化测试用例。可以模拟App内部的各种操作,如点击、滑动、文本输入等。只要我们手工操作的动作Appium都可以完成。

    • appium 支持多平台、多语言

      • appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。

      • appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。

      • appium 支持多平台,包括 MAC 和 Windows。它针对这两大平台开发了 appium-Server

      • 又同时支持 Android 和 iOS 两个操作系统。这就使得 appium 变得非常灵活。

    2.appium 的工作原理

    在这里插入图片描述

    1. 自动化脚本向AppiumServer发送注册参数(URL,platformName,platformVersion,deviceName,appPackage,appActivity

    2. AppiumServerbootstrap.jar包放入手机端

    3. 手机端用bootstrap启动手机端口(4724),并将端口返回给AppiumServer(相当于建立好了通信连接

    4. 自动化脚本发送请求(操作或命令或动作)给AppiumServer

    5. AppiumServer请求解析并发送给bootstrap

    6. bootstrap将请求解析发给UIAutomator

    7. UIAutomator执行相应的操作并将结果返回给bootstrap

    8. bootstrap将响应结果返回给AppiumServer

    9. AppiumServer将响应结果返回到脚本

    综上所述,AppiumServer像是一个请求者bootstrap充当桥梁的角色,负责PC与电脑之间的通信UIAutomator则是真正的执行者。

    3.APP类型

    在这里插入图片描述

    在这里插入图片描述

    4.APP页面布局

    类似于HTML,页面由各个标签组成
    在这里插入图片描述
    在这里插入图片描述

    二,appium开发环境部署(python环境)

    1.下载安装环境

    1.1.下载安装所需环境

    由于appium是基于JDK+SDK环境来运行,如果想正常使用python+appium进行脚本开发,需要部署下面的环境

    通过上面的设置,我们就具备了使用appium进行python自动化测试要求了

    1.2.Appium-desktop( Appium-Server-GUI )配置

    • 默认安装即可,无需特别设置,安装后启动桌面appium图标。
    • Appium-desktop配置Android SDK 安装目录和 Java JD安装目录
      在这里插入图片描述
      startServer启动Appium-desktop: 监听本地4723端口发起请求
      在这里插入图片描述

    1.3.Appium-Inspector 配置

    1. 远程路径(Remote Path):/wd/hub
    2. 高级设置(Advanced Settings):勾选 Allow Unauthorized Certificates,不勾选 Use Proxy
      在这里插入图片描述

    startSession启动Appium-Inspector

    在这里插入图片描述

    在这里插入图片描述

    1.4.元素探测工具

    • 用于定位APP元素的,比如需要点击某个按钮,需获取到该按钮的元素才能对其进行操作(单击,双击等),这里推荐使用UIAutomatorViewer
      在这里插入图片描述

    1.5.appium的功能介绍

    Simple:简单模式

    • Edit Configurations:可以配置android sdk和Java sdk的环境地址,如果已配置好环境,会使用默认的地址
      在这里插入图片描述

    Advanced:高级模式
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    • 如果某处有id,元素id值是唯一的,所以可用id去进行定位发送秘钥对文本框进行输入
      在这里插入图片描述

    2.appnium-python-client和selenium的关系

    • Appium Python Client模块与Selenium之间存在一定的版本依赖关系。

      • appium像是一个服务,appium-python-client是让python连接appium服务的一个驱动,也就是一个python语言封装和appium api通讯的一个库

      • appium又继承了selenium的webdriver因此appium-python-client安装会更新selenium。

        查看selenium和appium-python-client的版本
        	pip show selenium
        	pip show appium-python-client
        
        卸载当前的selenium和appium-python-client
        	pip uninstall selenium
        	pip uninstall appium-python-client
        
        安装指定版本的appium-python-clien
        #安装appium-python-client的同时,系统会安装与之相匹配的selenium版本
        	pip install appium-python-client==2.11.0
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11

    三.appium自动化代码编写步骤

    • Python3
    • Java8
    • Android SDK v2.4.1
    • Appium v2.2.1

    1.手机端操作(以红米手机为例)

    1. 进入【开发者模式】

      • 【设置】——【我的设备】——【全部参数】——【MIUI版本】点击5次,即可打开开发者模式
        在这里插入图片描述
        在这里插入图片描述
    2. 在开发者选项中,打开【usb调试】、【usb安装】
      在这里插入图片描述

    2.电脑端操作

    android-sdk-tools环境搭建

    • 安装installer_r24.4.1-windows.exe,中途一定要出现【java路径】再进行下一步
      在这里插入图片描述
      在这里插入图片描述

    • 解压缩build-tools.zip 、tools.zip 、platform-tools.zip 到 安装目录【不要文件夹套着文件夹
      在这里插入图片描述

    • 打开安装目录中SDK Manager.exe, 查看platform-tools和build-tools是否已安装
      在这里插入图片描述

    • 查看手机的android版本, 在SDK Manager中 安装对应 android版本
      在这里插入图片描述

    四.使用appium进行APP测试:

    1.手机端操作(以红米手机为例)

    • 进入【开发者模式】
      步骤见1,不再赘述

    • 打开USB调试及安装
      在这里插入图片描述

    • 手机通过数据线连接电脑

    2.电脑端操作(以手机中自带计算器为例)

    1. 打开appium,点击编辑配置,将如图所示位置的安卓SDK/JDK路径分别更改为自己的路径
      在这里插入图片描述

      • 保存修改,点击启动服务器
    2. 打开Appium Inspector配置需要连接app所需参数
      在这里插入图片描述

      • 如图所示几项分别为:
        {
          "platformName": "Android",  # 机操作系统,如 iOS, Android, 或者 FirefoxOS (必填)
          "platformVersion": "9",  #手机版本 (必填)
          "deviceName": "FJH7N19xxx00457",   #设备编码,不会进行校验,但是没有会报错 (必填)
          "appPackage": "com.android.calculator2",    #运行的 Android 应用的包名 (必填)
          "appActivity": "com.huawei.calculator.Calculator",   #程序入口类名 (必填)
          "noReset": true   #在当前 session 下不会重置应用的状态。默认值为 false(非必填)
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
      • 获取【设备名称】命令行输入【adb devices】,
        在这里插入图片描述
      • 获取【程序包名、程序入口类名
        1. 关闭手机所有后台程序
        2. . 打开 手机中 – 计算器-应用程序
        3. 在命令窗口输入【adb shell "dumpsys window | grep mCurrent
          在这里插入图片描述

        如果上面命令正确启动报错,说明当前的appActivity设置的不是app首次进入的appActivity,可以解析apk文件

        • aapt dump badging apk包路径 |findstr package
        • aapt dump badging F:\my_tools\DigiFinex_V2023.10.12_debugT.apk |findstr package
        • aapt dump badging apk包路径 |findstr activity
        • aapt dump badging F:\my_tools\DigiFinex_V2023.10.12_debugT.apk |findstr activity
          在这里插入图片描述
    3. 配置好所需功能后,保存配置,点击启动会话
      在这里插入图片描述

    4. 会发现手机端已经自动跳转到计算器界面,并显示在电脑端appium窗口左侧
      在这里插入图片描述

    • 注:如果手机是第一次连接appium,会提示下载一个软件【Appium Settings】,正常下载安装即可,安装后的APP如图中红框所示

      在这里插入图片描述
      之后再次使用就无需下载,【Appium Settings】运行时会显示在手机通知栏,如图中红框所示
      在这里插入图片描述

    • 通过鼠标点击电脑appium上的手机计算器界面,录制需要测试的操作(以测试九九乘法表为例)

      • 首先在DOS窗口中输入【adb shell pm clear 包名】,按enter,意为清除缓存,防止缓存对将要进行的测试造成影响,返回结果为【Success】即清除缓存成功
        在这里插入图片描述

      • 点击红框处眼睛图标,即为开始录制
        在这里插入图片描述

    • 开始录制具体操作,以操作7*8为例
      在这里插入图片描述

      在这里插入图片描述

    • 将录制的代码复制到pycharm

      from appium import webdriver
      from appium.webdriver.common.appiumby import AppiumBy
      from appium.webdriver.common.touch_action import TouchAction
      
      # Appium服务器地址
      appium_server = 'http://127.0.0.1:4723/wd/hub'
      # Appium测试设备配置
      desired_caps = {
          "platformName": "Android",
          "appium:platformVersion": "9",
          "appium:deviceName": "FJH7N19131000457",
          "appium:appPackage": "com.android.calculator2",
          "appium:appActivity": "com.huawei.calculator.Calculator",
          'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
          'resetKeyboard': True,  # 执行完程序恢复原来输入法
          'noReset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
          'newCommandTimeout': 6000
      }
      # 连接Appium服务器
      driver = webdriver.Remote(appium_server, desired_caps)
      driver.implicitly_wait(10)
      # TODO 干掉弹框
      TouchAction(driver).tap(x=777, y=2192).perform()
      
      # 清空计算器
      driver.find_element(AppiumBy.ID, "com.android.calculator2:id/op_clr").click()
      
      for i in range(1, 10):
          for j in range(i, 10):
              # TODO 按下 9
              el1 = driver.find_element(AppiumBy.ID, f'com.android.calculator2:id/digit_{i}')
              el1.click()
      
              # TODO 按下 乘X
              el2 = driver.find_element(AppiumBy.ACCESSIBILITY_ID, "乘")
              el2.click()
      
              # TODO 按下 8
              el3 = driver.find_element(AppiumBy.ID, f'com.android.calculator2:id/digit_{j}')
              el3.click()
      
              # TODO 获取 result 结果
              el4 = driver.find_element(AppiumBy.ID, "com.android.calculator2:id/result")
              print(f"{i} X {j} = {el4.text}", end=", ")
      
              # 清除
              el6 = driver.find_element(AppiumBy.ID, "com.android.calculator2:id/op_clr")
              el6.click()
          print(f"\n-----{i}乘法已完毕-----------")
      
      driver.quit()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 运行结果:
        在这里插入图片描述

    五.元素定位、元素事件操作

    【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下

  • 相关阅读:
    区块链技术的飞跃: 2023年的数字革命
    南大通用GBase8s 常用SQL语句(285)
    Debian衍生桌面项目SpiralLinux12.231001发布
    【Rust 日报】2022-09-30 Cranelift 已经 merge 了 RISCV 后端
    2023年湘潭大学OJ作业1 XTU OJ 1063,1064,1065,1066,1067 2023年下学期《C语言》作业0x00-输入输出
    Java面向对象编程
    统计学研硕大数据统计练手11
    Leetcode(524)——通过删除字母匹配到字典里最长单词
    去除六价铬树脂A-21性能测试
    英语六级day-1
  • 原文地址:https://blog.csdn.net/qq877728715/article/details/133682495