入门示例
通过上一篇博客APP自动化测试介绍-CSDN博客的学习,相信大家对APP自动化测试已经有了一定的了解,下面演示一下入门示例
1. 配置Appium
1.1. 点击Appium图标,打开服务器:
1.2. 点击Edit Configurations,进入配置页面,配置ANDROID_HOME和JAVA_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_HOME和JAVA_HOME后:
1.3.1. 如果是本地调试,在Host中输入127.0.0.1;Port默认4723,点击Start Server v.1.x.xx,启动Appium
2. 配置手机/模拟器
2.1. 连接手机/模拟器
- 真机需要数据线与电脑进行连接
- 模拟器使用adb connect xxx 命令 连接设备
2.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,以上代码可以正常运行。