Macaca是一套完整的自动化测试解决方案,优点是跨平台,同时支持移动端和PC端。举个栗子~移动端我们常用Appium,Web端常用Selenium进行自动化测试,当测试中同时涉及到移动端和Web端时,我们必须使用两个平台去实现。使用Macaca就不用这么麻烦啦,在这一个平台上就可以实现。
这里只在macaca下使用python进行web端测试
一、Macaca安装
官网上有详细的安装步骤,环境要求如下:
1)需要安装Node.js,去Node.js的官网直接下载安装就可以了。
2)Macaca Cli,客户端安装
npm i -g macaca-cli
看到下面的画面就是安装成功啦
二、用python进行web端测试
下载官网的例子(https://github.com/macaca-sample/sample-python),先安装electron的驱动,和requirement.txt里的wd.py(官方描述是:Python WebDriver client implemented most of the APIs in the WebDriver Protocol.)
npm install -g macaca-cli macaca-electron
pip install -r requirements.txt
安装requirements中的wd.py时,遇到个报错,提示operation not permitted,但已经用了sudo进行安装。问题类似于http://stackoverflow.com/questions/31900008/oserror-errno-1-operation-not-permitted-when-installing-scrapy-in-osx-10-11 中的描述(我当时没截图),然后也使用其中的方法解决掉了。使用命令:
sudo pip install -r requirements.txt --ignore-installed six
然后运行测试
macaca server
注意:这里输入上面这条命令后,需要再开一个窗口输入下面的命令。相当于一个窗口模拟服务端显示相关消息,另一个模拟客户端发送请求。
python tests/macaca-desktop-sample.test.py
运行成功后界面如下:
左边的窗口是运行了macaca server后的窗口。右边的红框中的两点表示两个用例都成功(如果失败会显示E)。
来看一下这个python脚本中写的什么用例,打开这个macaca-desktop-sample.test.py文件,可以看到用例如下。
第一个是设置窗口大小,再输入url。第二个是在网站上找到kw元素(通过firefox或chrome中的元素定位可以知道这个kw是搜索框的id,su是搜索按钮的id),输入macaca,点击搜索。等待3秒。通过assert断言验证搜索结果。再在当前页面搜索框文字后加上elementByXPath,点击搜索。
另外可以看到代码中desired_cap中browserName为electron,在官网描述中还可以支持Chrome,Safari。下面换成Chrome进行测试,将代码中browserName改为Chrome。
然后需要安装chrome的驱动(跟前面安装macaca-electron一样)
CHROMEDRIVER_VERSION=2.29 npm i macaca-chrome -g
这里需要注意:
1)一定必须加上版本号!要安装与Chrome版本对应的chromedriver,不然会报错。chromedriver的版本可以在下面的网址看到,与Chrome版本的对应关系可以在版本文件夹下的notes.txt中第一行就可以看到。我用的是Chrome v58,所以安装了2.29的chromedriver。
http://chromedriver.storage.googleapis.com/index.html
2)直接安装chromedriver是不行的!安装macaca-chromedriver也是不行的!必须安装macaca-chrome。因为路径会不一样,会报错。
安装完成后,再次运行macaca-desktop-sample.test.py,就可以看到会打开Chrome浏览器啦~
搞定~