专栏名称: 51Testing软件测试网
51Testing软件测试网,人气最旺的软件测试技术门户,提供软件测试社区交流,软件测试博客,人才服务,测试沙龙,测试杂志,测试资料下载等全方位信息服务,是国内最专业的软件测试就业培训、企业服务供应商...
目录
相关文章推荐
51好读  ›  专栏  ›  51Testing软件测试网

Appium+Python做移动端自动化测试

51Testing软件测试网  · 公众号  · 测试  · 2017-04-20 17:31

正文


  第一章 导言

  1.1 编制目的

  该文档为选用Appium作为移动设备原生(Native)、混合(Hybrid)、移动Web(Mobile Web)应用UI自动化测试的相关自动化测试人员、开发人员等提供参考。

  1.2 预期读者

  自动化测试人员、测试代表、开发人员等。

  第二章 概述

  2.1 Appium设计哲学

  • 不需要为了自动化而且重新编译或修改测试app;

  • 不应该让移动端自动化测试限定在某种语言和某个具体的框架;也就是说任何人都可以使用自己最熟悉最顺手的语言以及框架来做移动端自动化测试;

  • 不要为了移动端的自动化测试而重新发明轮子,重新写一套惊天动地的api;也就是说webdriver协议里的api已经够好了,拿来改进一下就可以了;

  • 移动端自动化测试应该是开源的;

  2.2 Appium技术框架(C/S 框架)

  Appium的核心是一个暴露了一系列REST API的Server。这个server的主要功能:监听一个端口,然后接收由client发送来的命令(command)。解析这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给server, server再把执行结果返回给client。

  client就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。狭义点理解,可以把client理解成是代码,这些代码可以是java/ruby/python/js的,只要它实现了webdriver标准协议就可以。

  这样的设计思想带来了一些好处:

  1)多语言的支持;

  2)可把server放在任意机器上,支持云测试;  


图1 Appium架构

  图2 Appium Android模型

  图3 AppiumiOS模型

  2.3 Appium Server/Client

  Appium Server即服务器,连接Appium客户端和移动设备。原生的webdriverapi为web端设计,因此扩展到移动端要拓展。Appium官方提供了一套appium client,涵盖多种语言ruby/java/python等。

  2.4 会话Session

  在webdriver/appium,所有测试都必须在Appium Server和移动设备之间创建会话(Session)后才可以进行。一般来说,通过POST/session这个URL,然后传入会话属性(Desired Capabilities)就可以开启会话了。开启会话后,会返回一个全局唯一的会话ID(session id),之后几乎所有的请求都基于该会话ID,该会话ID代表了你所打开的浏览器或者是移动设备的模拟器,连接执行机器和移动设备。由于每个移动设备的连接会话ID是全局唯一的,那么在同一台机器上启动多个会话就变成了可能,这使多移动设备的并发测试成为可能。

  会话属性(Desired Capabilities)包含会话配置信息,以key-value形式存在,可以理解成是java里的map,python里的字典,ruby里的hash以及javascript里的json对象(实际上,Appium Server和移动设备之间的会话属性就是通过json对象传输)

  第三章 Appium安装

  Appium Windows版仅支持Android设备(手机),Appium Mac版同时支持Android和iOS设备(手机)。

  3.1 Windows版安装(64位)

  3.1.1 软件列表

  1)JDK> 1.6

  2)vcredist_x86_c++

  3).Net Framework > 4.0

  3)Android Developer Tools(ADT-Bundle-windows-x86-64)

  4)Appium for windows(最新版1.4.16.1)

  5) Appium client(根据使用的语言安装一种即可:Java/Python/Ruby等),对于Java客户端,还需要Selenium包selenium-java-2.46.0.jar , selenium-server-standalone-2.46.0.jar,python的是Appium-python-client(就是一个python类库)

  6)Android手机驱动(for windows),windows必须安装任意一个Android手机驱动,否则,adb无法检测无设备。

  3.1.2 安装过程

  按照JDK、vcredist_x86_c++、.NET Framework、Appium的顺序安装好各软件,ADT直接下载就可以用无需安装

  1)JDK安装:设置系统环境变量JAVA_HOME为JDK安装路径:(Java安装和环境变量配置,自行百度)

  2)vcredist_x86_c++安装:百度下载vcredist_x86_c++.exe文件,双击安装即可。

  3).NET Framework安装:百度一个大于4.0版本的.NET Framework.exe文件。双击安装即可。

  4)Appium服务端安装:下一个Appium for windows 1.4.16版本,双击安装即可。(注:Appium分为客服端和服务端,服务端就是Appium工具,又可以分为GUI版本和终端版本。GUI版本是可视化的图像界面工具,终端版本是在终端启动的一个服务而已。客服端就是针对python、java、ruby等语言开发的类库)

  5)ADB安装:ADB是ADT的一个工具,所以,在要下一个ADT的安装包(免安装的)解压即可。然后,设置系统环境变量ANDROID_HOME为ADT所在目录(比如D:\Mobile-AutoTest-Software\adt-bundle-windows-x86_64-20130917\sdk),同时把并把ADT里的tools和platform-tools两个目录加入到系统的 Path路径里:注意:adb需要安装adb驱动,一般手机驱动自带adb驱动,所以只要安装一个手机驱动即可

  adb安装成功后在终端输入adb devices会弹出PC端连接的设备的udid

  6)python安装:下一个python2.7的安装包,双击安装即可。如果需要通过python安装相关的python类库,还要安装pypa-setuptools、pip等工具。

  7)Appium客服端安装:安装Appium Client(客户端只需安装一个,比如Python的或者Java的)这里以python为例:

  1、需首先安装Python、pypa-setuptools、pip等Python环境(安装过程自行百度),然后通过pip在线(PC需联网)安装Selenium及Python客户端(cmd下切换到Python安装目录C:\Python27\Lib\site-packages\后执行):

  python pip install Selenium

  python pip install Appium-Python-Client

  2、设置环境变量,把Python的目录加到系统的Path路径里

  小提示:

  安装Appium-Python-Client客户端时有时会遇到setuptools版本问题,运行python pip install –upgrade setuptools升级后再安装:

  如果机器没联网,下载Selenium和Appium-Python-Client,并解压把整个目录放到Python安装目录(一般是C:\Python27\Lib\site-packages 目录下),如下图(selenium-2.53.1目录下py目录的selenium目录拷贝到上面的site-packages目录)

  Java客户端可直接下载Jar包(比如java-client-3.2.0.jar),在Java工程中添加Jar即可。

  其他客户端安装【略】

  按照如上步骤安装好各软件后,基本环境就算完成了。启动Appum,填写被测APP路径,Platform选Android,Automation Name选Appium,PlatformVersion根据手机的Android版本选择,DeviceName选择上面adb命令识别的手机udid号;Server地址和端口保持默认:

  配置上面两项内容后,点击启动按钮,看到最后一行信息及表示启动成功:

  3.2 Mac版安装

  3.2.1 软件列表

  Mac Pro (OS X 10.10.3)

  JDK > 1.6

  Appium for Mac(最新版Appium-1.4.13.dmg)

  Xcode 7.X

  Appium Client(Python、Java等),对于Java客户端,还需要Selenium包selenium-java-2.46.0.jar , selenium  -server-standalone-2.46.0.jar

  3.2.2 Appium安装过程

  安装brew :终端输入ruby –e "$(curl –fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"

  安装node.js:到官网http://nodejs.org下载Mac的pkg安装包,下载完成直接安装即可无需配置任何参数。在终端输入node –version 如有版本号出来这说明成功。(也可以通过brew、来安装:brew install node)

  获取权限:sudo chmod –R  777 /usr/local/

  安装ideviceinstaller:brew update  ,brew install ideviceinstaller

  安装Appium服务端:npm install –g [email protected],npm install wd(还有问题就看这篇文章:www.15yan.com/story/4GbuTwXQKDU/)

  安装pip:sudo easy_install pip就行。

  安装appium python client和selenium(客服端):pip install Appium-Python-Client,pip install selenium

  过程和Windows基本一致,JDK安装过程自行百度,python咋Mac和Linux环境下是自带的无须安装。环境变量JAVE_HOME和ANDROID_HOME设置,并把ADT里的platform-tools和tools加到系统目录:

  最后,启动Appium-doctor检查环境配置,全部打勾说明环境搭建完毕:

... ...

 
推荐阅读

点击阅读☞免费移动应用测试框架—Appium篇

点击阅读☞Appium+Robotframework实现手机应用的自动化测试

点击阅读☞Appium自动化测试框架构建

点击阅读☞Appium 自动化测试演示

点击阅读☞Appium for Windows环境搭建

点击左下角“阅读原文”查看更多内容!