• python自动化测试之Appium自动化测试环境搭建


    【文章末尾给大家留下了大量的福利】

     前言:

    好几个小伙伴在问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   

              

    1、概念

    adb全称叫“android debug bridge”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互通信。adb 命令便于执行各种设备操作(例如安装和调试应用)

    它是一种客户端-服务器程序,包括以下三个组件:

    1.客户端(adb Client):用于发送命令给Server。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端,作用是连接到adb server

    2.守护进程 (adb daemon):运行在手机上的一个进程。守护进程在每个设备上作为后台进程运行(手机或模拟器上的守护线程)。

    3.服务器(adb server):管理客户端和守护进程之间的通信。服务器在开发计算机上作为后台进程运行。

    2、工作原理

       当你启动某个adb客户端时,客户端会先检查是否有adb服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后与本地TCP端口5037绑定,并监听adb客户端发出的命令- 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。

    然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。

    3、安装adb

    1、下载SDK-Tools AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 做安卓自动化测试时实际只需要用到SDK而已

     

    2、配置SDK环境变量,在系统高级设置中新增path

      D:\android\sdk

      D:\android\sdk\platform-tools

    下载的SDK-Tools不包含adb程序,因此需要重新下载

    adb等工具在platform-tools 文件夹下,因此将下载好的platform-tools文件夹放在 android sdk 根目录下,并把 adb所在的目录添加到系统 PATH 路径里,即可在命令行里直接访问了 adb, fastboot 等工具。

    查看是否安装成功

    进入Windows命令行窗口输入命令

    adb                     显示版本号以及详细信息

    adb version               显示版本号

    • 安装Appium Client 

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

              如果报错,

    Python 安装Appium-Python-Client 报错 

    Python 安装Appium-Python-Client一直报错,一直到安装成功都不知道什么问题,只能记录一下安装成功的步骤。

    安装命令pip install Appium-Python-Client

    1、一开始我是在Python编辑器中输入命令然后运行报错

    报错的截图是命令行的截图,报错内容是一致的

    2、根据搜索的解决办法,让升级pip 升级命令:python -m pip install --upgrade pip

    结果总是安装到一半还是报错

    3、又在命令行窗口下 运行以上命令还是同样的错

    4、最后仍在命令行窗口下执行,先定位到python安装的位置(如:D:\Programs\Python\Python36),然后运行命令

    1. 先运行 pip install Appium-Python-Client 报错,这块发现一个问题之前我一直是小写(appium-python-client)修改为大写
    2. 再次升级pip    运行命令 python -m pip install --upgrade pip   仍报错,发现虽然报错,但是每次安装的进度条都在增加,最后运行了2次该命令,pip升级成功

    3、再次运行  pip install Appium-Python-Client  报错

    4、报错后继续运行该命令: pip install Appium-Python-Client 最后安装成功

    总结:

    报错原因可能有3个

    1、安装Appium-Python-Client时,Appium-Python-Client该命令首字母小写(appium-python-client)导致的。

    2、在命令行 必须定位到 python安装的具体位置

    3、如果安装过程中一直报错,可以重复执行试试看,可能网络原因。

    • 安装Appium 

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

              1、下载Appium Desktop

                 地址找到对应的版本 [ Releases · appium/appium-desktop · GitHub ]  下载成功后点击安装,根据程序提示一致下一步安装即可。

                 

          


         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 ,编写测试代码

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

    PYTHON 复制 全屏

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

    Appium Service 中显示运行的日志

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

     重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料

    需要的先关注再私我关键字【000】免费获取哦 注意关键字是:000

    疑惑:为什么要先关注呢?   回:因为没关注的话私信回了你看不到

    项目实战

    app项目,银行项目,医药项目,电商,金融

    大型电商项目

    全套软件测试自动化测试教学视频

    300G教程资料下载【视频教程+PPT+项目源码】

    全套软件测试自动化测试大厂面经

    python自动化测试++全套模板+性能测试

    听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!

  • 相关阅读:
    使用.NET简单实现一个Redis的高性能克隆版(四、五)
    1544_AURIX_TC275_CPU子系统_存储寻址以及子系统寄存器
    数据结构与算法分析之优先队列
    多功能投票系统(ThinkPHP+FastAdmin+Uniapp)
    汽车网络安全--ECU的安全更新
    [AI Agent学习] MetaGPT源码浅析
    docker-harbor私有仓库
    LLVM系列:1.设计思想和LLVM IR简介
    12海里、24海里、200海里的意义及名称
    SpringBoot统一返回处理出现cannot be cast to java.lang.String异常
  • 原文地址:https://blog.csdn.net/csdnchengxi/article/details/126234995