Appium App自动化入门与实践

Appium App自动化入门与实践

  • 致读者
    • 理解工具
    • 工具下载
    • 特别准备的新系统
    • 1 JAVA JDK
      • 1.1 安装
      • 1.2 环境变量
      • 1.3 验证
    • 2 Android SDK
      • 2.1 安装
      • 2.2 环境变量
      • 2.3 验证
    • 3 Genymotion
      • 3.1 查看设备
      • 3.2 安装
      • 3.3 启动
      • 3.4 选择设备
      • 3.5 安装配置设备
      • 3.6 安装设备
      • 3.7 查看设备编号
    • 4 Appium-Desktop
      • 4.1 安装
      • 4.2 检查配置
      • 4.3 启动
      • 4.4 验证
      • 4.5 创建新会话
      • 4.6 从设备中提取关键参数
      • 4.7 启动会话
      • 4.8 如何使用录制功能
      • 4.9 如何提取元素
    • 5 Python
      • 5.1 安装
      • 5.2 环境变量
      • 5.3 验证
    • 6 PyCharm
      • 6.1 安装
      • 6.2 启动
      • 6.3 创建新工程
      • 6.4 选择项目类型
      • 6.5 新增Appium-Python-Client模块
      • 6.6 运行录制的代码
      • 6.7 效果图
    • 8 场景 : 自动登录
      • 8.1 提取关键参数
      • 8.2 模拟登陆效果
    • 9 学习资料
    • 10 过程中可能的问题

致读者

整理文档不易,未经授权,禁止转载.
本章内容纯入门,深入学习请拜读 官方 Appium Api

Appium(GitHub)是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试 – 百度百科
画了一个简单的UML,个人理解,仅限参考,非官方

python Appium Desktop Adb 设备(模拟器/真机) 0.编写操作逻辑 1.代码逻辑转adb命令 4.上下文 5. 上下文处理加工 2.执行命令 3.响应操作 python Appium Desktop Adb 设备(模拟器/真机)

理解工具

正确的选择工具可以让我们学习更有效率
网上的流程图我就不粘贴了,还是文字描述可能会简单一点,至少我这么觉得.

  1. PyCharm Python 语言开发工具,我尝试过IDEAAndroid Studio开发工具,但这个工具在网上我能找到很多Appium相关的问题解决.
  2. JDK Android SDK , Appium都依赖JDK环境
  3. Python 我也尝试过用Java,因为这是我工作用的语言,但是我还是Python,它可以更快入门,我们可以省去很多依赖包,编译,打包的过程
  4. Appium Desktop : 这是我们要学习的主要工具,我简单的理解为提供多种语言的Api,我观察日志发现它只是一个将Api的请求转化为Android adb命令的形式去操作(Andriod:手机/虚拟机), 注意还有个Appium命令版的,通过Node.JS(Npm)安装的,出现( A session is either terminated or not started )问题找了许久都没相关解决,安装桌面版的一切正常
  5. Android SDK: 安卓SDK , 内置多种工具,多种版本虚拟机安装工具等,我知道Appium需要用到它的环境变量(ANDROID_HOME),以及Adb工具.
  6. Adb 我觉得有必要一提这个东西, Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限, 在Android SDK 平台工具软件包中,在*/android_sdk/platform-tools/adb.exe

工具下载

Appium入门工具包集合(百度云)下载,全都在里面了
提取码5m5y

特别准备的新系统

保证环境干净
Appium App自动化入门与实践_第1张图片

1 JAVA JDK

1.1 安装

Appium App自动化入门与实践_第2张图片

1.2 环境变量

Appium App自动化入门与实践_第3张图片

1.3 验证

Appium App自动化入门与实践_第4张图片

2 Android SDK

2.1 安装

Appium App自动化入门与实践_第5张图片
Appium App自动化入门与实践_第6张图片
Appium App自动化入门与实践_第7张图片
Appium App自动化入门与实践_第8张图片

2.2 环境变量

Appium App自动化入门与实践_第9张图片

2.3 验证

Appium App自动化入门与实践_第10张图片

3 Genymotion

安卓模拟器:市面很多虚拟机工具都可以,不一定用sdk中的安装,比如国产雷电,逍遥,夜神,比较推荐Genymotion(个人版免费)

安卓真机:Usb连接笔记本,启动开发者模式

  1. 设置Usb调试
  2. 设置Usb配置 RNDIS(Usb以太网) ps:其他手机不知道有没有,三星s8+是要选择这个
  3. 通过adb devices 就能看到设备了

下面讲安卓模拟器安装的方式

3.1 查看设备

请牢记这个很常用的命令

#启动adb服务
adb start-server
#查看设备(当前无设备)
adb devices

Appium App自动化入门与实践_第11张图片

3.2 安装

这里我们安装了一个 Android8.1 64位 x86架构 的手机镜像,文件有点大,建议只选装一个版本
Appium App自动化入门与实践_第12张图片

3.3 启动

Appium App自动化入门与实践_第13张图片
此处需要注册一个个人账号,比较麻烦,但是这个模拟器用法比sdk安装简单很多
Appium App自动化入门与实践_第14张图片
Appium App自动化入门与实践_第15张图片

3.4 选择设备

Appium App自动化入门与实践_第16张图片

3.5 安装配置设备

Appium App自动化入门与实践_第17张图片
下载安装中
Appium App自动化入门与实践_第18张图片

3.6 安装设备

Appium App自动化入门与实践_第19张图片

3.7 查看设备编号

Appium App自动化入门与实践_第20张图片

4 Appium-Desktop

4.1 安装

Appium App自动化入门与实践_第21张图片

4.2 检查配置

Appium App自动化入门与实践_第22张图片

4.3 启动

Appium App自动化入门与实践_第23张图片

4.4 验证

Appium App自动化入门与实践_第24张图片

4.5 创建新会话

Appium App自动化入门与实践_第25张图片
上图中的配置,可直接粘贴进替换右边的JSON

{
  "platformName": "Android",
  "platformVersion": "8.0.0",
  "deviceName": "192.168.12.101:5555",
  "appPackage": "com.android.calculator2",
  "appActivity": ".Calculator",
  "noReset": true,
  "newCommandTimeout": "9000"
}

4.6 从设备中提取关键参数

参数 :appPackage appActivity

adb shell
logcat | grep ActivityManage

Appium App自动化入门与实践_第26张图片
Appium App自动化入门与实践_第27张图片
Appium App自动化入门与实践_第28张图片

4.7 启动会话

Appium App自动化入门与实践_第29张图片
Appium App自动化入门与实践_第30张图片

4.8 如何使用录制功能

Appium App自动化入门与实践_第31张图片
接下来我们可以安装Python,搭建环境运行这个代码

4.9 如何提取元素

Appium App自动化入门与实践_第32张图片
面的一个练习中会用到这里的元素提取

5 Python

5.1 安装

Appium App自动化入门与实践_第33张图片

5.2 环境变量

Appium App自动化入门与实践_第34张图片

5.3 验证

Appium App自动化入门与实践_第35张图片

6 PyCharm

6.1 安装

Appium App自动化入门与实践_第36张图片

6.2 启动

Appium App自动化入门与实践_第37张图片

6.3 创建新工程

Appium App自动化入门与实践_第38张图片

6.4 选择项目类型

Appium App自动化入门与实践_第39张图片

6.5 新增Appium-Python-Client模块

Appium App自动化入门与实践_第40张图片
Appium App自动化入门与实践_第41张图片

6.6 运行录制的代码

Appium App自动化入门与实践_第42张图片

6.7 效果图

8 场景 : 自动登录

8.1 提取关键参数

参数 :appPackage appActivity

adb shell
logcat | grep ActivityManage

打开App工程日志,这里提取的值,用于程序中的appPackage和appActivity
Appium App自动化入门与实践_第43张图片
查看我的按钮xPath元素位置,复制出来,代码中的xpath,id取值类似,不一一列举
Appium App自动化入门与实践_第44张图片
我们又点击了我的按钮,得到了一个新的Activity , 说明不同的页面可能有不同的Activity,我们可以用他在程序中做一个控制,比如等待这个Activity加载出来我们再执行下一个动作
Appium App自动化入门与实践_第45张图片

8.2 模拟登陆效果

输入的假是假账号,登陆失败是当然的

这是一段不健全的代码,可能某个页面延迟了也许就出现了异常.

from time import sleep

from appium import webdriver

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "8.0.0"
caps["deviceName"] = "192.168.12.101:5555"
caps["appPackage"] = "com.jifen.qukan"
caps["appActivity"] = "com.jifen.qkbase.main.MainActivity"
caps["noReset"] = True
caps["newCommandTimeout"] = "9000"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
## 显示等待5秒
sleep(5) 
## 我的按钮xPath
myButonXpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout[5]/android.widget.LinearLayout/android.widget.TextView'
## 点击我的按钮
driver.find_element_by_xpath(myButonXpath).click() 
# 这里写入点击我的后登陆页的Activity最大等待10秒
loginActivity = '.login.V2MainLoginActivity'
## 有这个Activity,那么开始进入登陆操作
if driver.wait_activity(loginActivity, 10) :
    nameInputId='com.jifen.qukan:id/bo6'  ## ID方式获取用户名框
    passwordInputId='com.jifen.qukan:id/bo7'  ## ID方式获取密码
    loginButonId='com.jifen.qukan:id/i1'  ## ID方式获取登陆按钮
    driver.find_element_by_id('com.jifen.qukan:id/br1').click()  ## ID方式获取密码类型登陆
    sleep(2) ## 点击密码类型登陆,等待用户密码框加载,显示等待2秒
    driver.find_element_by_id(nameInputId).send_keys('18888888888')  ## 键入用户名
    driver.find_element_by_id(passwordInputId).send_keys('88888888') ## 键入密码
    driver.find_element_by_id(loginButonId).click() ## 触发登陆点击
    sleep(2) ## 点击登陆后,显示等待2秒
driver.quit()

9 学习资料

10 过程中可能的问题

异常
Could not find 'adb.exe' in PATH. Please set the ANDROID_HOME or ANDROID_SDK_ROOT environment variables to the corect Android SDK root directory path.
解决: 未配置/错误配置 ANDROID_HOME ,配置 ANDROID_HOME 即可

异常
An unknown server-side error occurred while processing the command. Original error: Could not find a connected Android device.
解决: 未找到虚拟机或者是真机
1 . 请检查USB线
2. adb kill-server 再 adb start-server 重启adb服务(前提是配置了adb.exe(环境变量))

异常
An element could not be located on the page using the given search parameters
解决: try + except 做异常处理,或设置合理的延迟
1 . 元素因为网络或是反应慢,没有加载出来,设置合理的延迟或者控制
2. 在滑动页面时,页面出现了一半,另一半没有加载出来,获取失败.

异常
电脑下载的apk安装包,通过adb install **.apk 安装后,软件无法联网,可以通过应用市场来安装工具

你可能感兴趣的:(Appium)