标签 自动化测试 下的文章

PHPUnit+Selenium自动化测试过程中遇到的问题

最近在做自动化测试,前段捣鼓好了自动化测试环境,具体见

使用火狐下的Selenium扩展录制操作过程,然后导出成PHPUnit格式的测试用例文件,自己稍微修改,通过PHPUnit执行测试用例进行自动化测试。

整理一下修改导出的PHPUnit格式的测试用例文件时遇到的问题:

1.Selenium定位元素的时候支持Xpath。推荐使用火狐浏览器,可以很方便的获取某个元素的Xpath。不得不说,火狐浏览器真是开发人员的神器!!
安装firebug扩展后,查看某个元素,右键就可以复制Xpath了,如图。
firebug下获取Xpath
注意这里获取的Xpath都是通用的,而Chrome下的xpathOnClick扩展虽然也可以获取Xpath,但是它获取的都不是通用的,还需要自己再进行修改,所以推荐直接使用火狐。

另外推荐火狐下另外一款扩展——Xpath checker,可以直接获取Xpath,而且还可以验证你的Xpath是否正确。
在要查看Xpath的元素上右键,如图。
Xpath checker使用
验证Xpath是否正确,如图。
Xpath checker使用

这里获取的Xpath可能是类似下面的:

/html/body/div[6]/div[2]/div[2]/div[2]/div[3]/div[2]/table/tbody/tr/td[2]/dl/dt/a

Selenium要求Xpath以两个//开头,所以需要在上面的Xpath前面再加一个/。这点须注意,我就是因为这个捣鼓了快1个小时。

2.PHPUnit测试用例里的方法名必须是test****TestCase,****部分可以自定义,但是前后部分必须是test和TestCase,否则测试用例无法执行。
类似如图。
PHPUnit测试用例代码

最后上一下我自己的测试用例执行结果:
PHPUnit+Selenium执行情况

PHPUnit+Selenium执行情况

PHPUnit+Selenium执行情况

Ps:突然想到这货要是可以自动识别验证码,就完全可以搞成自动灌水机了啊!看我自己执行测试用例发的帖子数,这些都是它自己登录自己发出去的帖子。
PHPUnit+Selenium执行情况

在XAMPP环境下安装PHPUnit+Selenium

Selenium服务器端安装很方便,本文不再做介绍了。

XAMPP集成环境默认已经带了PEAR和PHPUnit了,但是版本较低,准备更新到最新版。

1) 更新PEAR通道:pear update-channels
2) 更新PEAR自身和其现有的包:pear upgrade -all

在cmd下,执行上面两个命令,发现老是报错,看了下错误信息,应该是安装到C盘,没有权限建立文件夹导致。
但是我的XAMPP应该是在E盘的啊,怎么安装到C盘去了,焦虑。找了一圈,也没发现PEAR的配置文件在哪。

执行下面的命令

pear config-show

发现好几项都是配置到C盘去了,杯具,这是什么情况。
后来搜索知道默认的配置是有问题的,需要从官方重新下载go-pear.phar,然后在cmd下执行命令

php go-pear.phar

然后一路Enter,最后会提示成功。

依次执行下面的命令

pear update-channels
pear upgrade-all

最后提示成功,然后执行下面的命令,查看PEAR的版本信息。

pear -V

执行结果如图:
pear查看版本号

接下来安装PHPUnit,执行下面命令。

pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony-project.com
pear install --alldeps phpunit/PHPUnit

最后会提示成功,请到pear的安装目录\PHPUnit\Extensions下检查是否有Selenium的文件,如:文件夹SeleniumTestCase和文件SeleniumTestCase.php,如没有执行下面的命令。

pear install phpunit/PHPUnit_Selenium

执行上述命令前,需要PHP开启curl扩展,否则会有如下的报错:
安装PHPUnit_Selenium

在执行PHP的测试用例的时候,有如下一个报错:

Call to undefined method PHP_CodeCoverage_Filter::getInstance()

后来看了下应该是系统环境变量里的path里的pear目录不对导致的,因为我把XAMPP自带的pear文件夹删掉后重装的,里面记录的路径还是之前的路径。
改了之后重新执行就ok了。
测试用例执行结果
如果系统环境变量没问题,不妨参考下这篇文章。
http://xiezhenye.com/2011/12/%e5%9d%91%e7%88%b9%e7%9a%84-phpunit.html

好吧,下面就要开始捣鼓自动化测试了~