Linux服务器上UIRecorder环境搭建和持续集成

提到“自动化”,相信每一位测试同学对此都不陌生,只要能用代码、工具或者其他自动执行的方式来代替手工执行都可称之为“自动化”。

 

 而UI自动化因其直观、直接触达上层功能业务、易学(录制)等特点,被很多测试人员所青睐。然而,长期的积累和沉淀,人们发现,UI自动化的可维护性非常差,任何一个小的改动,都有可能导致原有的UI自动化脚本执行失败,导致要不停地花费大量的时间来修改和维护脚本,这让测试同学们非常的痛苦。因此UI自动化更适用于那些界面长期较为稳定的、不易更改的功能,而对于那些经常会频繁改动的功能则不太适合进行UI自动化,需要选择接口自动化等其他方式进行测试。所以,UI自动化在测试的整个比重中占的是相对比较少的。但尽管如此,UI自动化仍有其用武之地,如上线前的核心功能回归。频繁地上线,导致需要频繁地回归一些长期没有修改但又比较重要的功能,倘若让UI自动化来帮你分担这部分任务,将大大降低重复劳动带来的繁琐和成本。

今天我们来介绍一个方便好用的UI自动化工具---UIRecorder。

 

UIRecorder是一款零成本UI自动化录制工具,支持Windows,Mac,Linux系统。

 

UIRecorder安装

1、安装nodeJS

nodejs版本选择在7.xx-8.xx之间,太高或者太低都不行~ 到时候安装依赖的时候会安装不上。

进入:https://nodejs.org/en/download/releases/ 下载对应版本即可

ssh进入linux服务器:

1)将nodejs安装包下载到服务器上

wget

https://nodejs.org/download/release/v8.11.2/node-v8.11.2-linux-x86.tar.gz

2)解压压缩包

tar -xvf node-v8.11.2-linux-x86.tar.gz

3)建立软连接变为全局

ln -s node解压文件夹路径/bin/npm /usr/local/bin

ln -s node解压文件夹路径/bin/node /usr/local/bin

4)检查是否安装成功

node -v

当出现node版本号的时候表示安装成功

2、安装cnpm

npm安装插件是从国外的服务器上下载,国内访问的时候经常会出现下载不下来或者很慢的情况,所以安装cnpm,从国内的镜像下载插件。

npm install cnpm -g --registry=https://registry.npm.taobao.org

安装成功后,后面需要npm的命令均可以通过cnpm来完成。

3、安装chrome

方法1:

下载chrome安装包

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

安装:

sudo apt-get update

sudo dpkg -i google-chrome*.deb

sudo apt-get install -f

如果上述方法你安装成功了,恭喜你,你是幸运的,反正我试了很多次,试到怀疑人生,依然木有安装成功,欲哭无泪~~

 

方法2:

于是,我放弃了上述方法,直接使用chromium,安装方法简直不能更简单:

sudo apt-get update

sudo apt-get install chromium-browser

 

(温馨提示:chrome浏览器启动不能以root用户启动,会报错)

 

4、安装chromedriver

由于服务器上都是无界面的,我们需要安装xvfb支持无头浏览器运行

sudo apt-get install xvfb

然后运行Xvfb -ac :7 -screen 0 1024x768x8 开启xvfb

新开一个窗口,运行chromium,会发现有报错:

不要慌,先执行:

export DISPLAY=:7

然后再执行chromium即可。

 

根据你安装的chrome的版本,找到对应的chromedriver版本(一定要对应哦!不对应的话, 是无法驱动浏览器进行录制和回放),下载并安装。chrome和chromedriver对应关系参考:

https://blog.csdn.net/huilan_same/article/details/51896672

下载解压后,将chromedriver建立软连接,使其可以全局访问,方法同上。

ln -s chromedriver解压后路径/chromedriver /usr/local/bin/chromedriver

 

5、安装uirecorder

cnpm install uirecorder mocha -g

 

6、安装selenium-standalone(回放时需要启动它进行回放)

cnpm install selenium-standalone -g

selenium-standalone install

安装成功后,运行selenium-standalone start如下图表示运行正常:

7、安装相关依赖插件

npm install mocha -g

npm install jwebdriver expect.js mocha-generators faker -save-dev

npm install jwebdriver chai faker -save-dev

 

通过以下命令检查uirecorder以及依赖是否安装成功

cnpm list uirecorder -g

cnpm list mocha -g

cnpm list mochawesome-uirecorder -g

若有出现对应的版本号,则表示安装成功

 

8、检查chrome与版本的对应关系

cnpm ls chromedriver -g

可见chromedriver版本是2.46.0,修改uirecorder安装路径下的package.json文件的chromedriver的版本号为2.46.0。

如路径

下的package.json文件中修改为2.46.0

然后再执行cnpm install即可。

还有一个比较笨的办法,就是通过命令:find / -name chromedriver

找到与uirecorder和selenium-standalone相关的所有路劲下的chromedriver,查看其版本,即逐个进入对应目录下查看目录下的chromedriver版本是否是你想要的版本,如果不是,复制一个,替换之,但名字要跟之前的名字保持一样(不同目录下名字可能不一样,有的叫chromedriver,有的叫chromedriver-2.46.0XXX类似;为了以防万一,可以将原有的chromedriver暂时改成原名字.bak备份)

 

9、新建一个空的目录,作为uirecorder初始化的目录,如uirecorderInit

cd uirecorderInit

uirecorder init

到此服务端环境搭建完成。

 

10、回放

由于是无界面的服务器端,所以主要是通过在本地录制好脚本,服务器端负责回放,用做日常回归用。

但是本地录制的脚本还不能直接到服务器上执行,因为服务器端是无头方式回放,所以需要对各个脚本的chromeOptions配置进行稍加修改即可。

1)修改配置

原配置:

'chromeOptions': {

'args': ['--enable-automation']

}

修改为:

'chromeOptions': {

'args': ['--enable-automation','--disable-extensions','--headless','window-size=1024,768','--no-sandbox','--disable-gpu']

}

可以写脚本批量修改,在每次回放前自动修改对应配置。

2)修改完配置,就可以开始回放了,首先启动selenium-standalone start,然后执行

mocha xxx.spec.js,然后发现chrome初始化失败!咦?为啥子呢,刚刚还测试可以正常启动chrome呢,回放的时候咋提示chrome初始化失败了呢?原因是,刚刚启动的时候指定了界面即export display=:7,则回放的时候,服务启动窗口也需要事先指定才可以,所以在启动selenium-standalone时,需要先export DISPLAY=:7,然后再selenium-standalone start,然后就可以回放啦!

如需批量回放生成报告,可执行:mocha 脚本路径/*.spec.js --reporter mochawesome-uirecorder

如此终于大功告成啦~

11、环境切换,uirecorder支持环境切换,可以修改hosts文件中的域名绑定即可。

jenkins上设置可以选择环境的选项:

然后编写脚本,根据选择的环境,修改hosts文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章