Phantomjs 我们网站的功能测试
我正在为我的站点编写一个功能测试套件 我用Firefox和Chrome进行了一系列测试,我很满意。他们每晚都在我们的詹金斯包厢里运行,而且运行得很好 然而,因为我们的Jenkins box是一个服务器,Chrome/Firefox是GUI应用程序,我不得不在我的桌面PC上运行测试。这是一个痛苦,因为这意味着我必须每晚打开它,这对环境和成本都不好。另外,如果它在电源、网络或软件方面有任何问题,那么测试就会失败 因此,我想要一些关于在Jenkins box本身上切换测试以使用无头浏览器的建议 看来我有三个选择:痛风、僵尸和幻影(当然,除非有人能推荐另一个)。以下总结了我迄今为止的进展:Phantomjs 我们网站的功能测试,phantomjs,zombie.js,sahi,mink,goutte,Phantomjs,Zombie.js,Sahi,Mink,Goutte,我正在为我的站点编写一个功能测试套件 我用Firefox和Chrome进行了一系列测试,我很满意。他们每晚都在我们的詹金斯包厢里运行,而且运行得很好 然而,因为我们的Jenkins box是一个服务器,Chrome/Firefox是GUI应用程序,我不得不在我的桌面PC上运行测试。这是一个痛苦,因为这意味着我必须每晚打开它,这对环境和成本都不好。另外,如果它在电源、网络或软件方面有任何问题,那么测试就会失败 因此,我想要一些关于在Jenkins box本身上切换测试以使用无头浏览器的建议 看来我
- Goutte:这是PHP驱动的,因此将在Mink内部运行,从而消除对Sahi的需求。这听起来很棒,因为Jenkins box的资源有限,所以我需要安装和运行的越少越好。然而,我需要在测试中运行JS代码,我知道Goutte无法做到这一点。这排除了吗
- 僵尸:在Node.js下运行。不幸的是,我根本无法做到这一点。我已经安装了Node、NPM和Zombie,但我无法让Mink识别它。有谁能给我一些比水貂网站更清晰的指导,告诉我如何运行这个网站
- 幻影:不幸的是,水貂没有幻影的驱动程序,所以我必须通过Sahi运行它。正如我所说的,我不希望在Jenkins服务器上安装Sahi,特别是因为它还需要作为服务器持续运行。但到目前为止,这是我唯一成功的一次。在Sahi下运行它,我可以让我的测试成功运行(尽管不一致,这是一个问题-它似乎是随机超时的,大约三分之一)。有人能建议一种不需要安装Sahi(或任何其他中间层服务器)的方式来运行它吗?或者如果我确实需要Sahi,有人能告诉我如何配置Jenkins在测试套件开始时启动Sahi,并在测试套件结束时停止它吗
谢谢你的建议。:这个答案是专门为 有人能告诉我如何配置Jenkins以启动Sahi吗 测试套件的开始和结束 使用ant,您可以使用以下目标启动Sahi
<target name="sahitests" description="start the server and run sahi tests">
<parallel>
<antcall target="start"/>
<sequential>
<waitfor maxwait="3" maxwaitunit="minute" checkevery="100">
<http url="http://${urlbase}/demo/index.htm"/>
</waitfor>
<antcall target="runietests"/>
<antcall target="stopsahi"/>
</sequential>
</parallel>
</target>
<target name="start" description="starts proxy">
<java classname="net.sf.sahi.Proxy" fork="true">
<classpath location="lib/sahi.jar">
<pathelement location="extlib/rhino/js.jar"/>
<pathelement location="extlib/apc/commons-codec-1.3.jar"/>
<pathelement location="extlib/license/truelicense.jar"/>
<pathelement location="extlib/license/truexml.jar"/>
<pathelement location="extlib/db/h2.jar" />
<pathelement location="extlib/poi/dom4j-1.6.1.jar"/>
<pathelement location="extlib/poi/excelpoi.jar"/>
<pathelement location="extlib/poi/poi-3.7-20101029.jar"/>
<pathelement location="extlib/poi/poi-ooxml-3.7-20101029.jar"/>
<pathelement location="extlib/poi/poi-ooxml-schemas-3.7-20101029.jar"/>
<pathelement location="extlib/poi/xmlbeans-2.3.0.jar"/>
<fileset dir="extlib" includes="*.jar"/>
</classpath>
<arg value="." id="basePath"/>
<arg value="userdata" id="userdataPath"/>
</java>
</target>
<target name="runietests">
<antcall target="clean-tests">
</antcall>
<sahi suite="../userdata/scripts/demo/demo.suite"
browserType="ie"
baseurl="http://${urlbase}/demo/"
sahihost="localhost"
sahiport="9999"
failureproperty="sahi.failed"
haltonfailure="false"
threads="6"
>
<report type="html"/>
<report type="junit" logdir="${userdata.dir}/temp/junit/tests"/>
</sahi>
<antcall target="report-gen" />
<antcall target="failsahi"/>
</target>
<target name="report-gen">
<delete dir="${userdata.dir}/temp/junit/reports">
</delete>
<mkdir dir="${userdata.dir}/temp/junit/reports"/>
<junitreport todir="${userdata.dir}/temp/junit/reports">
<fileset dir="${userdata.dir}/temp/junit/tests">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${userdata.dir}/temp/junit/reports/sahi-html" />
</junitreport>
</target>
<target name="failsahi" if="sahi.failed">
<antcall target="stopsahi"/>
<fail message="Sahi tests failed!"/>
</target>
<target name="stopsahi" description="stop sahi server">
<sahi stop="true" sahihost="localhost" sahiport="9999"/>
</target>
重要的是
Sahi作为代理服务器的开销/占用空间相当小 谢谢你的回答。非常感谢。我会试试你的想法;听起来很有趣。我现在也要接受答案,在我尝试之前,因为它看起来应该是我想要的,即使它对我不起作用,它肯定会教我一些东西!非常感谢。