APP自动化测试神器之Appium-Python环境部署及脚本实战

APP自动化测试神器之Appium-Python环境部署及脚本实战

Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol。
Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试。 它使用WebDriver协议驱动iOS,Android和Windows应用程序。

一、Appium简介

Appium实现APP自动化测试的脚本开发环境一般包括:

  • appium 服务端
  • appium客户端
  • 手机或者模拟器

1、appium服务端版本分为三种

  • appium GUI版本,桌面形式,win上更新到了1.4.16(不支持录制),mac上更新到了1.5.x(支持录制),目前均不再维护,GUI版本跟appium版本一一对应
  • appium 命令行版本,不管是win还是mac,安装这种形式的就没有界面,npm -g 安装方式都是install appium,默认会安装当前最新版本
  • appium desktop版本,属于新的桌面形式的appium版本,有界面,可以配置各项参数,可以启动inspect查看手机界面元素;不管是win还是mac下目前都支持简单的录制操作,appium desktop的版本和appium的版本并不是一一对应,下载地址:
https://github.com/appium/appium-desktop/releases/

2、appium客户端

不同语言对应不同的appium客户端软件。

3、Appium的工作原理

appium是一款开源的,跨平台的UI自动化测试工具,适用于测试原生的或者混合型的移动APP,支持IOS,Android,Firefox OS等平台,同时该框架支持JAVA,Python,PHP等语言编写的测试脚本。

二、appium开发环境部署(python环境)

如果想正常使用python+appium进行脚本开发,需要部署下面的环境,本文选择使用最新的1.15.1版本。

  • Node.js(node-v10.16.3-x64.msi)
  • Appium server(appium-desktop-Setup-1.15.1.exe)
  • JDK(JDK1.8)
  • Andriod SDK(adt-bundle-windows-x86_64.zip)
  • 模拟器(或真机)
  • python3.6
  • visual studio code

1、 安装Node.js

Appium是使用nodejs实现的,所以node是解释器,首先需要确认安装好,并且我们可以使用nodejs中的包管理工具npm进行相关插件的下载安装。

直接下载nodejs最新安装包node-v10.16.3-x64.msi,点击安装即可,无需特别注意。

作者是自定义安装在D:/node下了,并且将该目录加入环境变量path中:

2、安装Appium server

静默安装即可,无需特别设置,安装后启动桌面appium图标。

3、安装JDK8

下载JDK8安装包并安装,直接点击下一步....即可完成安装,默认安装在C:\Program Files\Java路径下。


需要设置Java的环境变量,如下图所示。

4、Andriod SDK的安装

下载adt-bundle-windows-x86_64.zip,直接解压即可使用。

需要配置两个路径到环境变量path中。

5、安装模拟器或者直接连接Android手机

模拟器可以选择主流的itools、夜神或者海马模拟器,在使用的时候启动即可,也可以直接连接Android手机设备到PC。

验证Androi模拟器或者真机是否连接上ADB

6、python安装

  • 官网下载python3.7.x的版本:python.org/,下载windows版本的可执行版安装包到本地。
  • Python 安装,体验傻瓜一样的快感,路径不喜欢可以在Customize installation中自定义更改;勾选add python 3.7 to path,省去配置环境变量的麻烦,爽爽哒,贴心哒。
  • 按 Win+R 键,输入 cmd 调出命令提示符,输入 python,确认是否成功

7、安装appium客户端软件

  • 直接在cmd窗口输入:pip3 install Appium-Python-Client
  • 如果从官方的资源库下载Appium-Python-Client失败,请自行更换下载源重新下载。在命令行输入"pip3 install Appium-Python-Client -i pypi.douban.com/simple"重试

8、安装IDE工具visual studio code

  • 下载最新版本vscode并启动
  • 需要安装三个支持插件,才能进行python脚本的开发
  • 第一次运行python文件会在右下角提示安装plint,点击安装后,重启vscode,再次运行,在控制台输出如下结果,则python开发环境完成。

9、环境总结

通过上面的设置,我们就具备了使用appium进行python语言下的脚本开发啦,后续会继续给大家更新关于Appium的脚本开发的文章。

三、第一个python自动化脚本

1、测试用例

下面我们就来着手实现QQ轻聊版本应用的登录业务脚本的开发和运行。

  • 打开android模拟器上的qq应用
  • 点击首页上的登录按钮
  • 在登录页面输入用户名和密码
  • 点击登录按钮
  • 滑动条状验证码进行验证(如果有的话)
  • 登录qq账号成功

2、脚本开发步骤

  • 新建Python文件
  • 创建unittest单元测试类,并添加setup及teardown函数
  • 对类MyTestCase添加setUp函数(这是测试用例执行前的准备动作,负责告诉appium监听那个端口、与那个手机连接、安装那个应用等信息)
  • 对类MyTestCase添加TearDown函数(这是测试用例执行结束后的动作,可以执行保存执行结果等操作)
  • 添加test开头的方法,编写自动化测试用例

3、实现的脚本

import unittest
import time
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from appium.options.common import AppiumOptions

class MyTestCase(unittest.TestCase):

    def setUp(self):
        # super().setUp()
        print('selenium version = ', selenium.__version__)
        option = AppiumOptions()
        option.set_capability("platformName","Android")
        option.set_capability("platformVersion","5.1.1")
        option.set_capability("deviceName","Android Emulator")
        option.set_capability("noReset",True)
        option.set_capability("appPackage","com.tencent.qqlite")
        option.set_capability("appActivity","com.tencent.mobileqq.activity.SplashActivity")

        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', options=option)
 
 
    def testQQLogin(self):

        time.sleep(2)
        self.driver.find_element(AppiumBy.ID,"com.tencent.qqlite:id/btn_login").click()

        time.sleep(5)
        self.driver.find_element(AppiumBy.XPATH'//android.widget.EditText[@content-desc="请输入QQ号码或手机或邮箱"]').send_keys("2572652583")
        time.sleep(5)
        self.driver.find_element(AppiumBy.ID,'com.tencent.qqlite:id/password').send_keys("123456789")
        time.sleep(5)
        self.driver.find_element(AppiumBy.ID,'com.tencent.qqlite:id/login').click()

    def tearDown(self):
        self.driver.quit()
 
 
if __name__ == '__main__':
    unittest.main()

4、运行测试脚本

脚本的运行效果https://www.zhihu.com/video/1250126091668942848

除此之外,小编还录制了不少这方面的技术视频,知友如果有需要,可以私聊本小编获取哦!


欢迎关注作者,如果觉得写的还不错,就给点个赞同、喜欢、收藏(后续持续更新)。

【全文手打 如需转载 请标注此出处】

编辑于 2023-10-20 19:13・IP 属地北京