验收测试 - WebDriver - 配置

  • 作者:KK

  • 发表日期:2015.12.13


什么是WebDriver

这样说好了,它翻译起来就是Web驱动,用我的经验来说,它就是驱动浏览器运行的一个驱动器

有什么作用?

就像一个司机可以驱动一台汽车行使一样,WebDriver可以驱动一个浏览器做浏览器可以做的事情(跳转页面,点击链接,划过选项卡...)

这些操作平时一般是我们人来操作的,但现在可以由WebDriver来操作

最终,它能将我们之前验收测试的代码传达给浏览器,让浏览器自动点击链接,断言页面是否有特定内容


WebDriver是一个模块,需要我们配置才可以使用,而且它不能和PhpBrowser模块一齐使用,下面我们以调用Chrome浏览器自动化测试为例子配置一下

需要准备以下软件:

  • Chrome浏览器,这个如果百度搜索Chrome的官网下载可能不一定成功,因为下载来的是一个"下载器",再由这个下载器通过国外线路下载这个浏览器的安装包本体,这个线路经常被祖国屏蔽.就连我自己都是靠XX软件管家或者太平洋软件站这些平台得到下载安装的.另外包装了Webkit内核的360极速浏览器,QQ浏览器,猎豹浏览器之类的不行,必须是 Chrome浏览器

  • JDK6或以上版本

  • Selenium服务器,它是一个Java软件包,推荐下载我共享到百度云的文件就行了,地址是http://pan.baidu.com/s/1R3EA6就行了,顺便提供一个官网地址http://seleniumhq.org/download

  • 谷歌浏览器驱动(chromedriver.exe),以下是几个获取方式:

    1. 也是推荐到百度云地址http://pan.baidu.com/s/1gemYiVD下载我共享的就行了

    2. 觉得我共享的那个可能有病毒的话可以自行到官网下载

    3. 到淘宝镜像站http://npm.taobao.org/mirrors/chromedriver下载最新版本


开始动手配置

  1. 将下载来的Selenium服务器软件包(selenium-server-standalone-版本号.jar)放到E盘根目录下吧,暂时先跟我这样放,以后你自己调整也行

  2. 将下载来的谷歌浏览器驱动(chromedriver.exe)放到谷歌浏览器那个exe相同的目录,比如我的安装目录是C:\Program Files (x86)\Google\Chrome,这个目录的Application子目录里面有浏览器的主程序chrome.exe,然后把刚下载的那个文件也放这里与主程序一起就好了

  3. 把chrome.exe所在的目录追加到系统环境变量PATH里

  4. 打开acceptance.suite.yml,将PhpBrowser这个模块名称换成WebDriver,并且记得也将modules - config - PhpBrowser这个PhpBrowser也给换掉,并且在modules - config配置下增加browser配置项,值为chrome,最终文件应该是像我这样的内容:

    class_name: AcceptanceTester
    modules:
    	enabled:
    		- WebDriver
    		- AcceptanceHelper
    	config:
    		WebDriver:
    			url: http://www.kkh86.com
    			browser: chrome
    

    由于这里我们将PhpBrowser模块换成了WebDriver模块,只要有模块变更就要重新构造测试器,还是以前的命令,关键就是build那里,我再重复一遍:

    cd E:\project1-tests
    php E:\codecepr.phar build
    

    运行build命令之后tests/acceptance/AcceptanceTester.php里的代码应该会发生变化,如果你有备份build之前的代码就可以对比一下


验证配置是否正确

做完以上的配置之后,我们开始验证一下配置得对不对,接下来我们要启动Selenium服务器,打开命令行,cd到E盘,然后执行

java -jar selenium-server-standalone-版本号.jar

接着下面就会哗哗地冒出好多程序输出内容,这里就表示Selenium服务器应该已经启动了,你不要关闭这个命令行窗口,不然Selenium服务器也会停止的哦,再是为了确认它是否真的启动成功,访问 http://127.0.0.1:4444/wd/hub 这个地址,如果有一个英文小页面即证明成功了

修改我们以前的那个教学用的IndexPageCept.php这个测试用例,将代码改成这样的:

use project1_tests\AcceptanceTester;	
$I = new AcceptanceTester($scenario);
$I->amOnPage('/');
$I->see('我叫KK');
$I->click('文章');
$I->seeCurrentUrlEquals('/article/list.html');

然后运行测试用例,正常的话稍等几秒应该会运行一个谷歌浏览器并打开被测试的网站,按照PHP代码去进执行的

可是如果浏览器没有被正常运行的话,根据大家的反馈判断很可能是驱动文件没被正确加载,你可以试下用这个命令启动Selenium服务器:

java -jar selenium-server-standalone-版本号.jar -Dwebdriver.chrome.driver="谷歌驱动所在的目录\chromedriver.exe"

好了,如无意外,就基于这个配置,接着一起学习后面的WebDriver级别的验收测试吧^-^