PHPUnit 整合 Selenium2 + PhantomJS
这个套餐真的整合了我好久,本人原先一直在做JAVA项目,对PHP不熟悉,网上查了很多资料,发现PHP与Selenium2无缘,网上的很多资料也是关于PHP+Selenium1的,后来也有看到外国达人上传了关于PHP+webdriver概念的WebDriverClient包,的确不错,但就是没有查到关于PhantomJS的相关内容,总之颠沛流离总算搞定了。(还是老外的资料全!)
闲话不多,那大致的配置流程如下:
1. 首先我们得有PHPUNIT环境,这个不多说,如果你是windows系统,那直接装XAMPP,用你的PHP编辑工具,直接把PHPUNIT指向出来即可,网上很多资料(虽然废话的多,但还是能找的到,这里不复述,如哪位找不到请留言给我,我视情况会补充进来。)那Linux环境麻烦吗?不麻烦,其实只要依靠pear,就能把phpunit搞定。这里要贴出来一个小细节。如果在安装phpunit出现
Did not download optional dependencies: pear/Image_GraphViz, pear/Log, use --alldeps to download automatically phpunit/PHPUnit requires PHP extension "dom"
这种错误,那你会感觉鬼撞墙一样,无了头绪,不要怕,四哥给你解决:
yum install php-xml
如果是CentOS,那一行命令就解决了。其他版本的,请把PHP-XML包补上,再执行安装PHPUNIT命令就可以了,如果担心有问题,可以用这行命令:
pear install -a phpunit/PHPUnit
好了,第一步phpunit就说到这里,如果有其他问题,欢迎留言询问。
2. 下载Selenium2 和 PhantomJS
这里要记住,selenium只需要下载RC即可,因为PHP和Selenium2无缘。。。唉。。。,均下最新版本吧。
下载地址就不给了,不知道哪里下的就百度吧。
3. 搭建Selenium RC 加 PhantomJS环境
这里要说下,我们其实还在用selenium1的方式启用PhantomJS,而Selenium2中所采用的WebDriver概念可以直接调用PhantomJS,可惜。。。你懂的,反正接着做呗:
首先将你下载的rc包与PhantomJS放到一个文件夹下(我是为了方便才放一起,要分开放也没有任何问题,PhantomJS下载下来有很多文件,你只要把PhantomJS.exe(windows) or PhantomJS(linux)找出来放在RC一个文件夹下就行),接下来执行我们的环境搭建命令:
//前面漏说要有Java环境,请勿忘 //再解释下参数 -port 顾名思义,端口,默认是4444,我不喜欢,就用4000 //-role 其实就是要和PhantomJS互绑用的,至于含义,老外也没写,如有朋友知道请告知我,谢谢,不过这个参数必须得加哦! java -jar selenium-server-standalone-2.43.1.jar -port 4000 -role hub //将本机的8910端口贡献出来做为PHANTOMJS的对外接口,内部连接4000端口的selenium端口,切记端口别挑已被占用的 phantomjs --webdriver=127.0.0.1:8910 --webdriver-selenium-grid-hub=http://127.0.0.1:4000
至于要一直挂着,加上要加的头和尾就行了(你应该懂的),windows的话建议就开2个窗口,千万别中断掉,必须保证他们一直有在运行。
到了这里,selenium RC 和PhantomJS 就算绑好了。
补充Linux命令:
nohup java -jar selenium-server-standalone-2.34.0.jar -role hub > /dev/null 2>1 &
nohup ./bin/phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http://127.0.0.1:4444 > /dev/null 2>1 &
4. PHP代码执行
这里就不多话了,大家复制代码去试试就知道了
<?php class phpphantomjs extends PHPUnit_Extensions_Selenium2TestCase{ protected function setUp(){ $this->setHost('192.168.103.103'); $this->setPort(4000); $this->setBrowser('phantomjs'); $this->setBrowserUrl('http://www.baidu.com'); } public function test(){ $this->url('http://www.baidu.com'); echo ($this->title()); } } ?>
有几个注意点,第一,如果你绑的是本机,请把IP的地方换掉就可以了,第二,注意我们继承的TESTCASE是Selenium2哦,这里必须是2;第三有可能你的输出是乱码,你会来骂我,什么东西。先消消火,你只要把代码和编辑器全局都改成utf-8模式,然后就妥妥的!~
我这里就不列出PHPUNIT的用法了,本文还是主要关注了配置,写的比较简易,但真的配起来,我把关键点都已经列出来了,大家如果觉得不好,请回复我,我尽量及时答复各位,以及考虑修改,谢谢!~
我的PHP不好,搭建环境也是为了公司用,为什么考虑这种模式,也是为了公司里的开发,唉,说多了都是泪。。。先写到这吧,以后再慢慢加些可能大家不知道的东西。