2011-08-01 25 views
3

这是来自硒电网。如何编写java/C#代码来并行执行。硒电网并联执行

这够了吗?

ISelenium selenium1 = new DefaultSelenium("localhost", 5555, "*iehta", "http://localhost/"); 
ISelenium selenium2 = new DefaultSelenium("localhost", 5556, "*iehta", "http://localhost/"); 
ISelenium selenium4 = new DefaultSelenium("localhost", 5557, "*iehta", "http://localhost/"); 


selenium1.Start(); 
selenium2.Start(); 
selenium3.Start(); 

因为当我运行http://localhost:4444/console有3所可用的远程控制,但即使我从上运行代码0激活遥控器。

来自蚂蚁的代码,我不明白100%。为什么参数
<arg value="-parallel"/>

<target name="run-demo-in-parallel" description="Run Selenium tests in parallel"> 
    <java classpathref="demo.classpath" 
     classname="org.testng.TestNG" 
     failonerror="true" 

     > 
     <sysproperty key="java.security.policy" file="${basedir}/lib/testng.policy"/> 
     <sysproperty key="webSite" value="${webSite}" /> 
     <sysproperty key="seleniumHost" value="${seleniumHost}" /> 
     <sysproperty key="seleniumPort" value="${seleniumPort}" /> 
     <sysproperty key="browser" value="${browser}" /> 

     <arg value="-d" /> 
     <arg value="${basedir}/target/reports" /> 
     <arg value="-suitename" /> 
     <arg value="Selenium Grid Demo In Parallel" /> 
     <arg value="-parallel"/> 
     <arg value="methods"/> 
     <arg value="-threadcount"/> 
     <arg value="10"/> 
     <arg value="-testclass"/> 
     <arg value="com.thoughtworks.selenium.grid.demo.WebTestForASingleBrowser"/> 
    </java> 
    </target> 

回答

1

为什么会有参数

<arg value="-parallel"/>? 

这是TestNG的。这将并行运行所有方法/类/测试,而不是按顺序运行。你可以看到更多关于这个属性here。你已经注册了3个RC,理想情况下,你应该看到所有3个被用于执行。您可以检查网格控制台链接以查看利用率 - http://localhost:4444/console其中localhost是集线器正在其上运行的IP,port是集线器正在侦听的端口号。

编辑: 更改您的代码指向硒毂端口而不是RC端口。默认情况下,Hub端口将是4444.还要确保您已启动环境为* iehta的RC节点。

+0

thx回答。这一切都是真实的,但在“主动遥控”​​下没有RC。这个可以吗? – senzacionale

+0

开始测试后,您应该在“Active Remote Control”下看到RCs。你的代码有问题。我已经更新了我的答案。 –

0

你在做什么可以工作,但速度会很慢,几乎和以真正的连续方式做这件事一样糟糕。这是因为Selenium的大部分电话都会阻塞直到完成。要真正利用Grid提供的并行化,您应该多线程化您的代码。每个Selenium对象都有一个线程。

+0

好吧我现在为ech selenium对象创建了一个线程。但我不认为这是更快或mabye我错了。怎么看是否是并行执行? – senzacionale

0

你并不需要多线程测试代码并行运行硒实例(虽然你可以,如果你真的想)。一个处理线程分叉的框架可以为你做,比如TestNG,Maven Surefire或者Gradle。例如,我的项目通过演示在单台计算机上使用Gradle分叉线程/实例来演示多个实例运行的多个实例:https://github.com/djangofan/selenium-gradle-example