Appium,说实话,笔者最开始并不知道可以怎么用,也不知道App自动化测试是一种怎样神奇的操作,带着好奇的心态去了解了一把 Appium。当然第一件事便是搭建环境,真坑!以下,且听我慢慢道来,笔者是如何站在无数巨人的肩膀上一步一步把坑填起来的。
首先说明一下笔者的开发环境,需根据实际情况来。
MAC OS: 10.12.5
Appium: 1.5.3
Java: 1.8
Python: 3.6
Seleniun: 3.5.0
一、安装Appium客户端
笔者下载的是上面最新的v1.5.3版本;
[下载地址:https://bitbucket.org/appium/appium.app/downloads/ ]
安装成功后,打开Appium应用,点击 Appium Doctor 查看是否安装成功,遇到了第一个坑:
Appium Doctor iOS Could not detect Mac OS X Version from sw_vers output: '10.12.5 '
不怕噢,按以下网址说明重新配置这几个文件就OK了。
[详见:http://blog.csdn.net/yxys01/article/details/73551281 ]
修改配置后,重新执行 Appium Doctor 检测是否安装成功,遇到了第二个问题:
info AppiumDoctor ✔ The Authorization DB is set up properly.
[TypeError: Cannot read property 'replace' of undefined]
继续寻找答案,原是没有安装 <code>node.js</code> 。
[详见:http://blog.csdn.net/lunamagic/article/details/52713797 ]
安装 <code>node.js</code> 后,执行 Appium Doctor 检测,这一步可以通过,中间也许会有关于 <code>JAVA_HOME</code> 和 <code>ANDROID_HOME</code> 没有配置环境变量的错误,不过这都是小事,大家在搭建 Android 开发环境前,定会妥妥地配置一把。
二、安装 Appium 客户端库
Appium客户端库可以有多种语言选择,因为笔者之前很少接触脚本语言,听说了许多脚本语言的强大之处后,就选择了心心念想着的 Appium Python Client,安装脚本和命令如下:
git clone git@github.com:appium/python-client.git
cd python-client
python setup.py install
第三步,安装 Python 3,其实 Mac 上已经有 Python 2.7版本存在,只不过笔者想安装最新的版本,如何切换到 Python 3呢?在 .bash_profile 文件中添加以下配置,路径为你自己安装的Python 3的路径:
alias python="/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5"
[详见:http://www.jianshu.com/p/2c83363fa623 ]
三、自动化测试脚编写和执行
真正的体验开始了,启动Appium,选择Apk文件进行配置和自动化,参考 demo 写个最简单的 python 脚本开始自动化测试之旅。问题来了:
selenium.common.exceptions.WebDriverException: Message: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id","sessionId","id","sessionId","id","sessionId","id"]} and you sent ["capabilities", "desiredCapabilities"]
一开始以为这个问题很好解决,因为 Appium github上有人遇见过一样的问题,但最终发现对于笔者我这个刚接触 Appium 和 Python 的小白来说,并不懂其间的关联,大多数答案是 降低 selenium 的版本到 3.3.1 ,这可为难了,说的不明确,因为笔者查看到 Python 3 和 Appium Python Client 包中是带有 selenium 3.6版本的,降级是要自己下载 3.3.1 替换还是重新下载一个 selenium 呢?笔者当时已经被这一丢丢的东西给弄混了,现在还没有特别明确知道 Appium Python Selenium 这三者如何关联一起的。于是花了一上午的时间定位到了 github上的另一个答案,按照上面的说法,自个的理解是,降级并不可靠,毕竟大家倾向用最新版本的东西,既然说参数格式不正确,那就将 webdriver.py 中的 parameters 格式改成需要的格式。果真,摸索着改了 Python 3 包下的 <code>/python3.6/site-packages/selenium-3.5.0-py3.6.egg/selenium/webdriver/remote/webdriver.py</code> 文件,再执行测试脚本,Appium 可以成功执行测试脚本,最终开启了自动化测试之旅~
[问题详见 @jimevans:https://github.com/SeleniumHQ/selenium/issues/4017#issuecomment-302030078]
相关资料:
- Appium 参考文档:http://appium.io/slate/cn/master
- Appium-Python-client 库和Demo:https://github.com/appium/python-client