python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)

0.前言

看了很多自动化测试入门的课程,还是B站白月黑羽讲的最详细
从环境搭建到常用功能,讲的都比较详细

由于没什么项目实践,就简单写了一个什么值得买APP自动签到脚本
后期打算买个树莓派,把整个环境搭在树莓派上,但是不知道能不能安装appium

代码实现思路上和PC端的浏览器自动化测试比较类似(Selenium库)
环境搭建上有很多坑,最好是按照之前搭过的配置来(百度云链接在下面)
之前自己搭的时候,也是一样安装的jdk、appium、Androidsdk、夜神模拟器
但是一直无法连接模拟器,换安卓手机直连就可以

主要是记录环境搭建过程和连接过程

1.环境搭建

使用的是appium+AndroidSDK+夜神模拟器(官网下载)
jdk+appium+AndroidSDK测试通过的版本
链接:https://pan.baidu.com/s/1sgR3V7VRRYggfCWMojDvCA 提取码:ct3c

自动化测试原理:
python代码(appium库–客户端)–连接到Appium Server/AndroidSDK–连接到安卓设备控制操作

  • 自动化程序(python代码)
     需要使用appium客户端库,发出自动化指令给Appium服务器,进而操作手机

  • Appium Server
     负责管理手机自动化环境,转发自动化程序的控制指令给手机

  • 安卓设备
     使用IOS/Android都可以进行自动化测试,可以使用Android的真实设备,也可使用模拟器

环境搭建:

  • python安装appium库
pip install appium-python-client
  • 安装Appium Server+AndroidSDK+jdk
     利用上面的百度云链接安装AppiumServer和AndroidSDK
      添加环境变量ANDROID_HOME,目录为解压的Androidsdk根目录
      添加环境变量PATH路径,androidsdk\platform-tools
     安装jdk之后需要添加环境变量JAVA_HOME
    python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)_第1张图片
    在这里插入图片描述

  • 安装夜神模拟器
     直接从官网下载安装即可

  • 连接安卓设备
     打开安卓设备的开发者模式,选择允许USB调试

python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)_第2张图片
python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)_第3张图片

2.连接设备

#查看adb是否添加环境变量成功
adb

python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)_第4张图片

#连接模拟器
#夜神模拟器开机,开启USB调试
adb device -l

在这里插入图片描述
但是显示没有找到模拟器设备,没有成功连接
查找资料有的是因为AndroidSDK的adb版本和夜神模拟器的nox_adb版本不一致
尝试将AndroidSDK的adb复制到夜神模拟器目录下改为nox_adb

#查看adb版本
adb version

版本一致后,还没找不到设备
分别连接127.0.0.1:62001后终于连接成功
在这里插入图片描述
在这里插入图片描述
再次查看adb连接设备,显示已经连接
在这里插入图片描述
启动appium
python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)_第5张图片

3.代码实现

简单写了一个什么值得买APP签到
核心代码只有两行
整体分析与爬虫和Selenium比较类似
还是推荐xpath定位

#encoding=utf-8
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey

desired_caps = {
  'platformName': 'Android', # 被测手机是安卓
  'platformVersion': '5.1.1', # 模拟器安卓版本
  'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
  'appPackage': 'com.smzdm.client.android', # 启动APP Package名称
  'appActivity': '.app.WelComeActivity', # 启动Activity名称
  'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
  'resetKeyboard': True, # 执行完程序恢复原来输入法
  'noReset': True,       # 不要重置App,防止登录信息丢失
  'newCommandTimeout': 6000,
  'automationName' : 'UiAutomator2'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(5)
driver.find_element_by_id("com.smzdm.client.android:id/tab_usercenter").click()
driver.find_element_by_id("com.smzdm.client.android:id/tv_login_sign").click()
driver.quit()

你可能感兴趣的:(Python)