• Appium 自动化测试环境搭建



    Appium 介绍

        Appium是一个开源工具,用于自动化IOS手机、Android手机和Windows 桌面平台上的原生、移动 Web 和混合应用。Appium 是跨平台的它允许你用同样的 API 对多平台(iOS、Android、Windows)写测试。做到在 iOS、Android 和 Windows 测试套件之间复用代码。

    Appium 的概念

    客户端 / 服务器架构

     Appium的核心是一个公开REST API的Web服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复 HTTP 响应来描述执行结果。

    Session(会话)

     自动化始终在一个会话的上下文中执行,这些客户端程序库以各自的方式发起与服务器的会话,但最终都会发给服务器一个 POST /session 请求,请求中包含一个被称作「Desired Capabilities」的 JSON 对象。此时,服务器将启动自动化会话并使用用于发送更多命令的会话 ID 进行响应。

    Desired Capabilities

     Desired Capabilities 是一些发送给 Appium 服务器的键值对集合(比如 map 或 hash),用于告诉服务器我们想要启动什么类型的自动化会话。还有各种功能可以在自动化过程中修改服务器的行为。

    Appium Server

     Appium是用Node.js编写的服务器。它可以从源代码构建和安装,也可以直接从NPM安装

    Appium Clients

     有一些客户端程序库(分别在 Java、Ruby、Python、PHP、JavaScript 和 C# 中实现),它们支持 Appium 对 WebDriver 协议的扩展。

    Appium Desktop

     Appium Desktop是一款适用于Mac,Windows和Linux的应用程序,它以美观而灵活的UI提供了Appium自动化服务器的强大功能。它基本上是Appium服务器的图形界面。您可以设置选项,启动/停止服务器,查看日志等...您也不需要使用Node/ NPM来安装Appium,因为Node运行时与Appium Desktop捆绑在一起

     注意:Appium Desktop与Appium不是一回事。Appium Desktop是Appium的图形前端,带有其他工具。


    相关环境安装

    • 安装JDK

    • 安装 Android SDK   

              查看 Android SDK 安装步骤

    • 安装Appium Client 

               在pycharm中安装Appium Client ,在命令窗口执行:pip install Appium-Python-Client

              如果报错,查看具体步骤 [ https://www.cnblogs.com/liho/p/16520+286.html ]

    • 安装Appium 

      Appium可以通过以下两种方式之一进行安装:通过NPM或下载Appium Desktop,这是一种基于桌面的图形化方式来启动Appium服务器。

              1、下载Appium Desktop

                 地址找到对应的版本 [ https://github.com/appium/appium-desktop/releases下载成功后点击安装,根据程序提示一致下一步安装即可。

                 

          


         2、启动Appium服务器 

    (1)打开Appium Desktop,看到服务器启动窗口。基本选项是启动具有所有默认值的Appium服务器以及修改主机和端口的功能。start 按钮知道正在运行的是哪个版本的Appium服务器。

    (2)启动服务器,点击Start启动服务器,它将在指定的主机和端口上启动,并打开一个显示服务器日志输出的新窗口


    运行测试

    使用 Appium 运行测试应用(测试设备:Android )

    1、adb检查是否连接设备

    首先,必须确保adb连接了一个且只有一个Android模拟器或设备。检查是否连接设备运行:adb devices

    2、启动Appium并配置选项

    1、Appium启动成功后,Appium右上角有三个选项分别为:Start inspector session 启动检查器会话、Get Raw Logs  获得原生日志、Stop Server  停止服务

    2、点击Start inspector session启动检查器,选择 Automatic Server(自动化服务),填写 Desired Capabilities

         Desired Capabilities是在 JSON 对象中编码的键和值,在请求新的自动化会话时由 Appium 客户端发送到服务器,

    每个Appium客户端都以特定于客户端语言的方式构建功能,但最终,它们会作为JSON对象发送给Appium。

     

    以下为选项名称及获取方式:

    (1)deviceName  : 设备名称  ,获取方式:通过adb devices获取  127.0.0.1:62001

     

    (2)platformName : 操作系统名称   可填写:Android和IOS

    (3)appPackage : 测试APP的包名 获取方式  可输入:adb shell pm list packages -3 查看包名,测试包名:com.youdao.calculator

     

    (4)appActivity  : activity程序主入口   com.youdao.calculator.activities.MainActivity

         获取方式:adb logcat | findstr START     输入该命令,同时点击要启动的app,即可获取到包名和activity

     

     注意:Activity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加 . (例如 使用 .MainActivity 代替 MainActivity) 

    配置成功后右侧显示对应的JSON对象。

     

    3、点击 Start Session 启动会话 

     显示测试APP的界面,可以定位元素

     

    4、编写测试脚本

    确保已经安装Appium Client ,编写测试代码

    """
        @Time : 2022/7/22 17:03
        @Author :LH
        @desc :  测试自动启动APP
    """
    from appium import webdriver
    # import time
    
    
    desired_caps = { }
    desired_caps['deviceName'] = '127.0.0.1:62001'  # 测试设备名称
    desired_caps['platformName'] = 'Android'  # 测试系统
    desired_caps['plaformVersion'] = '7.1.2'  # 版本号
    desired_caps['appPackage'] = 'com.youdao.calculator'  # app 包名
    desired_caps['appActivity'] = '.activities.MainActivity'  # App最先启动的Activity
    # 打开APP,返回webdriver对象
    # 连接APP server (需要先启动appium server)
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    
    print("启动成功")

    运行成功后,模拟器中自动启动测试的APP

    Appium Service 中显示运行的日志

    环境搭建完成,测试成功,可以进行自动化测试。

  • 相关阅读:
    [附源码]Python计算机毕业设计Django的高校课程知识库
    Win10怎么禁止自动安装软件
    2023年11月数据库流行度最新排名
    声纹技术(三):声纹识别技术
    actual combat 22 —— 若依图片上传成功但是无法回显
    人脸识别:概述【Loss:Softmax loss、Triplet loss、Centre loss、SphereFace、CosFace、ArcFace】
    参考开源项目实现一个简易的C++枚举转字符串的函数
    C++哈希
    Learn Prompt-ChatGPT 精选案例:学习各国语言
    kubelet源码分析-创建
  • 原文地址:https://www.cnblogs.com/liho/p/16555045.html