Web自动化--Macaca-python

Macaca是一套完整的自动化测试解决方案,优点是跨平台,同时支持移动端和PC端。举个栗子~移动端我们常用Appium,Web端常用Selenium进行自动化测试,当测试中同时涉及到移动端和Web端时,我们必须使用两个平台去实现。使用Macaca就不用这么麻烦啦,在这一个平台上就可以实现。

这里只在macaca下使用python进行web端测试

一、Macaca安装

https://macacajs.github.io

官网上有详细的安装步骤,环境要求如下:

1)需要安装Node.js,去Node.js的官网直接下载安装就可以了。

2)Macaca Cli,客户端安装

    npm i -g macaca-cli

看到下面的画面就是安装成功啦

Web自动化--Macaca-python_第1张图片

二、用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

运行成功后界面如下:

Web自动化--Macaca-python_第2张图片

左边的窗口是运行了macaca server后的窗口。右边的红框中的两点表示两个用例都成功(如果失败会显示E)。

来看一下这个python脚本中写的什么用例,打开这个macaca-desktop-sample.test.py文件,可以看到用例如下。

Web自动化--Macaca-python_第3张图片

第一个是设置窗口大小,再输入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浏览器啦~

搞定~

你可能感兴趣的:(Web自动化--Macaca-python)