9.1 Appium介绍
Appium是Sauce Labs出品的一个开源的自动化测试框架,可以用来测试iOS和Android平台上的原生应用、移动Web应用和混合应用。原生应用是指使用iOS和Android的SDK开发出来的App;移动Web应用指的是使用移动浏览器访问的应用,比如Appium支持iOS上的Safari和Android上的Chrome,或内置浏览器;混合应用指的是通过WebView使得原生代码内容和Web内容可以进行交互的App。
当然,最重要的是Appium是一个跨平台的框架,它允许你在iOS和Android这两个不同平台上使用同样的API来编写自动化测试脚本,这样提高了测试代码的复用性。
前面介绍Web测试底层用的是Selenium框架,其实Appium这里也是封装了Selenium的框架,其实就可以把移动App应用看作是一个网页,然后通过Appium进行测试。
Appium结合Robot Framework来做测试,需要先安装好Appium。
有关Appium的安装,如果你使用的是Mac平台,可以参考如下网址中的文章的介绍:
https://testerhome.com/topics/1225
如果你使用的是Windows平台,可以参考如下网址中的文章的介绍:
https://testerhome.com/topics/2376
这里就不详细介绍了。
安装好Appium之后,需要再安装两个Python的测试库,一个是Appium-Python-Client,另一个是robotframework-appiumlibrary。前者是用Python脚本来驱动Appium的,后者是基于Robot Framework实现的Appium库,用到了前者实现的一些基础框架。这两个就类似于Selenium和Selenium2Library一样。
相关下载地址:
https://pypi.python.org/pypi/Appium-Python-Client/
https://pypi.python.org/pypi/robotframework-appiumlibrary
推荐使用pip安装。如果想要手动安装,那就需要查看一下这个Library依赖哪些Library。查看方法是在下载地址把源码包下载下来,解压缩,通常会有一个目录是“.egg-info”结尾的,它有可能在根目录,也有可能在src里面,前面的名字一般就是测试库的名字了,比如Appium_Python_Client.egg-info。找到这个目录后,目录下面会有一个requires.txt的文件,打开它就可以看到它依赖哪些Library及其版本了。
比如Appium-Python-Client依赖的是:
selenium>=2.41.0
enum34
而robotframework-appiumlibrary依赖的是:
decorator >= 3.3.2
robotframework >= 2.6.0, <= 2.8.7
docutils >= 0.8.1
Appium-Python-Client >= 0.5
mock >= 1.0.1
sauceclient >= 0.1.0
pytest-cov >= 1.8.1
pytest-xdist >= 1.11
pytest-pythonpath >= 0.4
当然,可能其中某个Library又会依赖其他Library,这就要具体地一个个看了,所以手动安装是比较麻烦的事情,如果依赖比较少还可以,依赖多的时候就不如pip省心了。
在Appium安装好之后,需要运行一下appium-doctor来检查一下环境是否都配置好了。可以通过命令行运行,也可以通过单击Appium客户端界面上的第3个按钮(比较像医生听诊器的那个),Mac版客户端界面,如图9-1-1所示。
单击此按钮后,如果看到类似于下面的信息,那就是配置正确了。如果有任何异常,会提示你要修复异常,比如缺少某些安装包或者没有配置环境变量等。
/Users/qitao >'/Applications/Appium.app/Contents/Resources/node/bin/node' '/Applications/ Appium.app/Contents/Resources/node_modules/appium/bin/appium-doctor.js'
Running iOS Checks
Xcode is installed at /Applications/Xcode-beta.app/Contents/Developer
Xcode Command Line Tools are installed.
DevToolsSecurity is enabled.
The Authorization DB is set up properly.
Node binary found at /usr/local/bin/node
iOS Checks were successful.
Running Android Checks
ANDROID_HOME is set to "/Users/qitao/Desktop/mobile/android/adt-bundle-mac- x86_64-20140321/sdk"
JAVA_HOME is set to "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/ Home."
ADB exists at /Users/qitao/Desktop/mobile/android/adt-bundle-mac-x86_64-20140321/ sdk/platform-tools/adb
Android exists at /Users/qitao/Desktop/mobile/android/adt-bundle-mac-x86_64-20140321/ sdk/tools/android
Emulator exists at /Users/qitao/Desktop/mobile/android/adt-bundle-mac-x86_64- 20140321/sdk/tools/emulator
Android Checks were successful.
All Checks were successful
都安装好后,我们就直接用例子入手了。
……
展开
本书作者是一位高水平的测试实践家,在工作和学习中深刻理解了Robot Framework在软件测试中的应用,并总结了一套高效的学习理论和方法。这本书涵盖了在自动化测试中遇到的大部分场景,不但内容充实、逻辑严密,且图文并茂、语言生动。对Robot Framework使用者来说,本书更是一部人人必备在案头的工具书。
——优酷土豆网搞基测试工程师 丁恒
Robot Framework(RF)是一款优秀的开源测试框架,它简单易用、拓展性强,可以适用于各种各样的被测物和测试场景。同时RF有着十分活跃的社区支持,从工具选型的角度来看,很值得花时间去研究。RF自身有着良好的设计,很多测试理念被巧妙地集成其中,因此测试开发工程师深入学习RF也会获益良多。作者是RF中文社区的核心力量之一,也是RF的坚定实践者。在本书里,作者将多年一线的测试经验融入了对RF的详尽介绍内容中。阅读本书,读者既可以快速掌握RF的具体知识,又可以学习到作者对自动化测试的很多思考。一举两得,何乐而不为呢?
——雪球直男测试工程师 刘晓光
在豆瓣的时候,也使用了一段时间的Robot Framework(RF)。记得刚入职豆瓣的时候,搭建RF的环境就坑了3天。搭建好以后就换了Mac,然后又是3天。看到道长把安装过程写得很详细,于是觉得这本书的读者好幸福呀,可以很轻松地安装并且开始学习。RF的流行是因为很多人都为RF贡献了力量,并且以Library的形式提供更加便捷的使用方式。本书还介绍了很多流行的Library,是一本业界良心的好书。
——豌豆荚资深测试工程师 芈峮
我在诺基亚网络使用Robot Framework比作者早很多,但作者却是编写中文实用文章的很多人,同时积极普及知识、推动相关社区发展,如今更是将他的经验总结成书,内容详尽细致,是初学者们非常适合的入门书和参考书。
——大中华区敏捷及DevOps卓越中心主管、IBM 徐毅