APP自动化测试-入门示例

news/2025/2/21 22:48:36/

入门示例

通过上一篇博客APP自动化测试介绍-CSDN博客的学习,相信大家对APP自动化测试已经有了一定的了解,下面演示一下入门示例

1. 配置Appium

1.1. 点击Appium图标,打开服务器:

1.2. 点击Edit Configurations,进入配置页面,配置ANDROID_HOMEJAVA_HOME

1.2.1. 如何查看ANDROID_HOME
      • 打开Android Studio进入任一项目页面后,进入设置页
      • 点击SDK Manager - Android SDK:
      • 复制图中Android SDK Location 填入即可
1.2.2. 如何查看JAVA_HOME
      • Windows 系统:
        • 在控制面板中打开「系统」,然后点击「高级系统设置」。
        • 在「系统属性」对话框中,点击「环境变量」按钮。
        • 在「环境变量」对话框中,找到「系统变量」下的「JAVA_HOME」变量,并查看其值。
      • Mac 电脑,可以使用终端命令来查看Java Home的位置:
        • 打开终端应用程序,然后执行以下命令:/usr/libexec/java_home
        • 该命令会返回Java Home的路径,示例如下:

1.3. 配置好ANDROID_HOMEJAVA_HOME后:

1.3.1. 如果是本地调试,在Host中输入127.0.0.1;Port默认4723,点击Start Server v.1.x.xx,启动Appium

2. 配置手机/模拟器

2.1. 连接手机/模拟器

  1. 真机需要数据线与电脑进行连接
  2. 模拟器使用adb connect xxx 命令 连接设备

2.2. 打开手机/模拟器,打开开发者模式

  1. 设置-关于手机(关于平板电脑)-版本号-连续点击五次开启开发者模式
  2. 允许usb调试:开发者选项--usb调试开关打开

3. 配置Appium inspector

3.1. 打开Appium inspector,输入正确的Host、Port、Path

3.2. 填写初始化APP的必填参数

3.2.1. 方式一:左侧单个输入

3.2.2. 方式二:右侧直接json输入

3.2.3. 点击Start Session

3.2.4. 连接成功

入门代码示例

1. 示例一

import timefrom appium import webdriver# 定义desired_caps 字典,初始化app的配置信息
desired_caps = {"platformName": "android",  # 表示的是android 或者IOS系统"platformVersion": "10",  # 表示的是设备系统的版本号"deviceName": "DWV6R19A10002101",  # 表示的是设备的ID名称(如果只有一个设备可以用****来替代)"appPackage": "com.android.settings",  # 表示的是app的包名"appActivity": ".HWSettings"  # 表示的是app的界面名
}# 创建 Appium 驱动对象
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)# 等待 APP 初始化完成
driver.implicitly_wait(10)# 执行具体的操作,例如点击、输入等
time.sleep(5)# 关闭 APP
driver.quit()

在上面的示例中,首先定义了desired_caps字典,其中包括了平台名称、设备版本号、设备名称、APP 包名和主 Activity 等信息。然后,通过Remote方法创建了Appium驱动对象,并使用implicitly_wait方法等待 APP 初始化完成。

其后,可以根据具体的需求在...部分添加各种操作,例如点击按钮、输入文本、滑动屏幕等。

最后,使用driver.quit()方法关闭Appium会话。

2. 异常报错处理

注意如果是使用pip命令安装appium-python-client、selenium时默认安装了最新版本,最新版本是不兼容的,这是他们的版本兼容性列表:

报错信息:AttributeError: 'NoneType' object has no attribute 'to_capabilities'

2.1. 解决办法:

2.1.1. 方式一:回退版本
  • 打开pycharm中
    • 在Pycherm打开settings
    • 选择"project- interpreter"
    • 双击appium-python-client进入,选择Specify version,可以勾选不同版本
    • 点击Install package
    • selenium安装时,与上述方法一致
2.1.2. 方式二:更改代码(不兼容是因为新版本更改了部分属性内容,可自行百度)

代码如下:

3. 示例二

import time
from appium import webdriver
from appium.options.android import UiAutomator2Options# 定义desired_caps 字典,初始化app的配置信息
desired_caps = {"platformName": "android",  # 表示的是android 或者IOS系统"platformVersion": "10",  # 表示的是设备系统的版本号"deviceName": "DWV6R19A10002101",  # 表示的是设备的ID名称(如果只有一个设备可以用****来替代)"appPackage": "com.android.settings",  # 表示的是app的包名"appActivity": ".HWSettings"  # 表示的是app的界面名
}# 创建 Appium 驱动对象
options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote("http://localhost:4723/wd/hub", options=options)# 等待 APP 初始化完成
driver.implicitly_wait(10)# 执行具体的操作,例如点击、输入等
time.sleep(5)   # 加了time.sleep(5)可能会报错,大家注意调试# 关闭 APP
driver.quit()

上述代码通过引入UiAutomator2Options,完美解决问题,我目前使用是appium-python-client:3.2.1、selenium:4.18.1,以上代码可以正常运行。


http://www.ppmy.cn/news/1367831.html

相关文章

政安晨【示例演绎虚拟世界开发】(四):从制作一个对战小游戏开始(Cocos Creator 《击败老大》)(第一段)

咱们将制作第一个小游戏,《击败老大》,在制作的过程中,我们会学习如何导入资源、如何在游戏中使用图片资源、如何调整游戏的设计分辨率等,同时继续学习并使用一些常用的组件。相信在完成了这个小游戏之后,你一定可以感…

Linux设备模型(四) - uevent应用:内核发送uevent,用户空间接收uevent

1,内核发送uevent 内核发送uevent的API由lib/kobject_event.c文件实现,include/linux/kobject.h是头文件。 enum kobject_action {KOBJ_ADD,KOBJ_REMOVE,KOBJ_CHANGE,KOBJ_MOVE,KOBJ_ONLINE,KOBJ_OFFLINE,KOBJ_MAX };/* kobject_uevent不能用在中断上下…

Spark Shuffle Tracking 原理分析

Shuffle Tracking Shuffle Tracking 是 Spark 在没有 ESS(External Shuffle Service)情况,并且开启 Dynamic Allocation 的重要功能。如在 K8S 上运行 spark 没有 ESS。本文档所有的前提都是基于以上条件的。 如果开启了 ESS,那么 Executor 计算完后&a…

chalk库的使用

这篇文章主要是对chalk库官方文档的中文翻译以及我自己的一些理解。chalk的官方文档可以看这里。 首先说下chalk库的作用:美化终端输出的文本,例如添加不同的字体颜色、不同颜色的背景、粗体以及添加下划线等等,看下图: 优点 富…

4、Redis-Set【常用】

目录 一、Redis-Set特点 二、常用命令与交并差 三、Redis中Set类型应用场景 一、Redis-Set特点 1、无序:添加的是A,B,C;取出的可能是B,A,C 2、唯一:不允许元素重复 二、常用命令与交并差 常用命令 格式含义例子sadd key members[...]往k…

Leetcode刷题(十八)

一、203. 移除链表元素 代码: class Solution:def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:while head and head.val val:head head.nextpre, cur head, headwhile cur:if cur.val val:pre.next cur.nextelse:p…

如何安装ProtoBuf环境

1 🍑下载 ProtoBuf🍑 下载 ProtoBuf 前⼀定要安装依赖库:autoconf automake libtool curl make g unzip 如未安装,安装命令如下: Ubuntu ⽤⼾选择: sudo apt-get install autoconf automake libtool cur…

十大最常见的Spring框架错误

Spring可以说是最受欢迎的Java框架之一,也是一个可以驯服的强大野兽。虽然它的基本概念相当容易掌握,但成为一名强大的Spring开发人员需要一些时间和精力。 在本文中,我们将介绍Spring中一些常见的错误,特别是面向Web应用程序和S…