2018 09 01 用 PhantomJS Headless Browser跑Robot FrameWork
一直以来,跑Robot Framework的Web UI Test Case时,习惯都用对FireFox支援较友善的Selenium2Liberary来Run Firefox web driver,虽然明知Selenium的Open Browser keywork事实上支援多种Web Driver,但一直都只用firefox来作为Robot Framework的专用Browser,唯二的缺点就是:开Browser有时很慢并且需要指定firefox profile路径(如果需要客制化profile,这还衍生另一个跨平台问题,Mac(Unix-like OS)与Windows的路径使用格式不同,因此你可能需要对open browser 写法做if 条件处理,否则就是做两版Robot Framework project for mac及windows)。
下图说明Open Browser可以指定多种不同Browser:
然而我实在是受够FireFox常常开很慢的问题,这取决于机器效能与网路速度,另外就是FireFox因为需要打开UI在桌面上跑,所以有时候为了怕找不到页面元素,总是需要做类似Maximize Browser Window的处理,而且效果取决于执行机器的环境,在调整Test Case时总是要花费很多时间在这种无效率的调整上,所以我开始考虑使用HeadLess Browser作为Robot Framework的Testing Browser。
PhantomJS正是这样的Browser,这种Browser有一个特色就是执行的时候不会有UI画面出现在桌面上,看起来就干净俐落许多,而要把他弄到Robot Framework 上步骤很简单,只要先下载PhantomJS Package并放到电脑某个路径,再把PhantomJS的bin Folder设为环境变数Path的路径之一,重新run robot framework,然后在Test Case中指定用PhantomJS作为Open Browser的Browser,就可以执行HeadLess Browser Automatic Testing了。
- 下载PhantomJS Package(Version 应该大于2.0)并解压放到电脑某一路径底下。
Download from : http://phantomjs.org/download.html
然后我解压缩把Package内容后放到D:\Program Files\PhantomJS底下。
- bin 底下放著PhantomJS.exe,必须把该folder设到环境变数path之下。
- 设定PhantomJS bin Folder为环境变数Path路径之一。
1). 到电脑 系统->进阶系统设定->环境变数
2). 找到path 变数加入底下路folder path : D:\Program Files\phantomjs\bin\; 然后储存变数。
3). 可以在command line 下用 echo %path%检查path是否已加入该folder路径。
- 重新载入Robot Framework
Robot可以重新把新的环境变数吃进去。
- 在robot的test case中,用以下两种方式指定用PhantomJS作为Browser
1). Open Browserhttp://www.google.comphantomjs
2). Create Webdriverphantomjs
最后实测结果:
- 执行时桌面不会开browser。
- 不需要最大化视窗也可以操作到所有元素。
- 执行时间比需要开FireFox Browser还要快上十秒左右。
2018年9月1日星期六