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

相关推荐
测试杂货铺7 分钟前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
艾派森11 分钟前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
MediaTea15 分钟前
七次课掌握 Photoshop:选区与抠图
ui·photoshop
小码的头发丝、37 分钟前
Django中ListView 和 DetailView类的区别
数据库·python·django
Chef_Chen1 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
小码哥说测试2 小时前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
千澜空2 小时前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
斯凯利.瑞恩2 小时前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
yannan201903132 小时前
【算法】(Python)动态规划
python·算法·动态规划
蒙娜丽宁2 小时前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉