自动化测试之移动自动化(Appium)

1、Appium介绍

工作流程

image

  • C/S框架,appium核心是一个Web服务器,提供了一套接口。它会接收客户端发送过来的命令,然后在移动设备上运行命令,最后把运行结果通过HTTP响应包返回给客户端。
  • session,每个client连接到server以后都会创建一个session,自动化始终围绕一个session进行。

2、环境搭建

2.1、安装jdk


2.2、配置环境变量

  • 打开命令行窗口,校验java版本:java –version

2.2.1、win7环境

  • 确定jdk的安装位置:C:\Program Files (x86)\Java\jdk1.8.0_111
  • 修改环境变量:
    • 添加环境变量
      • 变量名:JAVA_HOME(建议用)
      • 变量值:C:\Program Files (x86)\Java\jdk1.8.0_111(jdk的安装位置)
    • 添加PATH变量
      • ;%JAVA_HOME%\bin;

2.2.2、win10环境

与win7环境配置类似

2.2.3、安装Android SDK

# 添加环境变量
ANDROID_HOME=E:\sofeware\AndroidSDK\android-sdk

# 在Path中添加  
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
  • 打开命令行窗口,输入adb校验是否能识别到命令

2.2.4、模拟器安装

  • 下载模拟器,并进行安装(夜神、雷电模拟器);安装后运行,设置模拟器类型及分辨率
  • 打开模拟手机的设置,选择开发者选项,开启调试模式,并开启USB调试

2.2.5、adb连接

连接模拟器、真机

  • 模拟器开启开发人员选项
  • 开启USB调试
  • 在cmd终端输入adb devices查看已连接并识别的移动设备

2.2.6、Appinum安装

1、安装服务器

2、安装python客户端库

pip install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple

3、adb调试工具

adb(Android Debug Bridge) 为Android开发调试工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备

3.1、工作原理


image

  • Client端:运行在开发机器中,即你的开发电脑,用来发送adb命令
  • Damon守护进程:运行在调试设备中,手机或模拟器,用来接收adb命令
  • Server端:同样运行在开发机器中,用来管理Client端和手机的Damon之间的通信

3.2、常用工具

  • adb --help:查看adb帮助
  • adb devices:获取当前电脑已经连接设备和对应的设备号
  • adb start-server:启动adb服务端,出现bug时使用可以重启服务器,先关闭再启动
  • adb kill-server:停止adb服务端,出现bug时使用可以重启服务器,先关闭再启动
  • adb shell dumpsys window windows | findstr mFocusedApp:获取界面名(也叫启动名),只在windows下有效
  • adb shell dumpsys activity activities | grep LAUNCHER:获取界面名(也叫启动名),只在mac、Linux下有效

4、元素定位工具

  • Android SDK自带元素定位工具,通过截屏并分析XML布局文件的方式,为用户提供控件信息查看服务

  • 工具说明

    • uiautomatorviewer
    • monitor
  • 工具路径
    • Linux:sdk目录下的tools/bin
    • Windows:sdk目录下的tools

4.1、使用步骤

  1. 保证电脑已经连接手机,通过adb devices查看
  2. 打开元素定位工具
  3. 查找元素定位后的信息

注意点:

  1. 自动打开的命令窗口不要关

  2. 打开uiautomatorviewer闪退,或者打开monitor空白,因为jdk版本过高导致

  3. 软件突然报错

    1. adb kill-server
      adb start-server

5、快速入门

5.1、测试环境是否正常

  • 保证电脑已经连接手机,通过adb devices查看
  • 开始Appinm服务,第一次启动需要配置ANDROID_HOMEJAVA_HOME信息
    • window会自动识别配置
    • mac需要手动配置

5.2、操作步骤

  • 电脑连接手机后,启动测试软件,注意,先启动app软件
  • 通过adb查看包名界面名(也叫启动名)
命令 作用
adb shell dumpsys window windows | findstr mFocusedApp 获取界面名(也叫启动名),只在windows下有效

adb shell dumpsys activity activities | grep LAUNCHER

获取界面名(也叫启动名),只在mac、Linux下有效

image

  • 通过元素定位工具,定位所测试元素的信息
  • 编写自动化测试代码
from appium import webdriver
import time

# 初始化平台信息
desired_caps = {
    'platformName': 'Android',  # 表示平台类型
    'platformVersion': '10.0',  # 表示平台的系统版本
    'deviceName': '****',  # 表示的是设备的ID,如果当前电脑只连接了一台手机或模拟器,可以使用4个*号代替
    'appPackage': 'mark.via',  # 表示app的包名
    'appActivity': '.ui.activity.BrowserActivity',  # 表示的是app的界面名,via浏览器
    'noReset': True  # 启动app时不要清除app里的原有的数据
}

# 远程控制,启动via浏览器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(2)  # 延时

# 点击搜索框
driver.find_element_by_xpath('//*[@resource-id="search_input"]').click()
time.sleep(2)

# 在搜索框输入文字
driver.find_element_by_xpath('//*[@resource-id="search_input"]').send_keys('黑马程序员')
time.sleep(2)

# 点击搜索按钮
driver.find_element_by_xpath('//*[@resource-id="search_submit"]').click()
time.sleep(5)

# 退出
driver.quit()
View Code

posted on 2020-10-25 17:49  yycnblog  阅读(288)  评论(0编辑  收藏  举报

导航