APP自动化测试-入门示例

入门示例

通过上一篇博客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 time

from 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,以上代码可以正常运行。

相关推荐
时艰.1 分钟前
Java 线程池 — ThreadPoolExecutor
java·开发语言·python
七夜zippoe3 分钟前
时间序列分析实战:从平稳性检验到Prophet与LSTM预测
人工智能·python·机器学习·arima·时间序列·prophet
ccino .6 分钟前
【官方最新VMware workstation pro获取】
运维·网络安全·自动化
多恩Stone8 分钟前
【3D-AICG 系列-2】Trellis 2 的O-voxel (上) Shape: Flexible Dual Grid
人工智能·python·算法·3d·aigc
AAD555888997 小时前
数字仪表LCD显示识别与读数:数字0-9、小数点及单位kwh检测识别实战
python
开源技术8 小时前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
b***25119 小时前
电池组PACK自动化生产线的关键流程与核心优势
运维·自动化
Li emily9 小时前
解决港股实时行情数据 API 接入难题
人工智能·python·fastapi
wfeqhfxz258878210 小时前
农田杂草检测与识别系统基于YOLO11实现六种杂草自动识别_1
python
mftang10 小时前
Python 字符串拼接成字节详解
开发语言·python