我正在修改我们现有的Selenium Grid设置,以便它可以与Selenium 2一起工作。设置集线器和节点的过程似乎要简单得多,但是我在像以前那样在Ant构建中运行它时遇到了一个问题。
我已经通读了关于Selenium 2 Grid的wiki,并试图相应地设置Ant构建。我的问题是第一个目标运行,启动中枢。然后,其他目标不运行,但构建完成。我试图在我自己的机器上运行这些,使用Selenium 1 (RC) Junit测试,并将TestNG作为测试运行器。
我的目标如下:
<taskdef resource="testngtasks" classpath="testng-${testng.version}.jar" />
<target name="start-hub" description="Start the Selenium Grid hub">
<java classpathref="runtime.classpath"
jar="${basedir}/selenium-server-standalone-${server.version}.jar"
fork="true"
spawn="true">
<arg value="-v" />
<arg value="-role" />
<arg value="hub" />
</java>
</target>
<target name="start-node"
description="Start the Selenium Grid node"
depends="start-hub">
<java classpathref="runtime.classpath"
jar="${basedir}/selenium-server-standalone-${server.version}.jar"
fork="true"
spawn="true">
<arg value="-role" />
<arg value="rc" />
<arg value="-hub" />
<arg value="http://localhost:4444/grid/register" />
<arg value="-port" />
<arg value="5555" />
<arg value="-browser" />
<arg value="browserName=firefox,version=3.6,maxInstances=5,platform=WINDOWS"/>
</java>
</target>
<target name="run-tests" description="Run the tests" depends="start-node">
<testng classpathref="runtime.classpath"
haltonfailure="true">
<sysproperty key="java.security.policy"
file="${grid.location}/lib/testng.policy" />
<arg value="testng.xml"/>
</testng>
</target>
看起来Ant线程在第一个目标运行之后就完成了。我研究了一种在新窗中启动它们的方法,就像之前的网格一样,但除了exec
任务之外,我没有看到这样做的方法。我还尝试在exec
任务中运行集线器,并将节点作为java
任务运行。这导致ant构建在start-hub
目标完成后停止执行,而不是完成。
有什么方法可以让它运行,或者有更好的方法来完成它吗?
看看Mozilla团队是怎么做的:
https://github.com/mozilla/moz-grid-config请注意,他们仍然使用Grid 1节点启动器,因为Grid 2在这方面是向后兼容的。但它应该能让您了解如何在ant中处理此问题。