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时,即使我从 up 运行代码,也会有 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>
4

3 回答 3

1

为什么有参数

<arg value="-parallel"/>?

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

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

`ISelenium selenium1 = new DefaultSelenium("localhost", 4444, "*iehta",` "http://localhost/");
于 2011-08-02T13:29:00.560 回答
0

你正在做的事情会奏效,但会很慢,而且几乎和以真正的串行方式做一样糟糕。这是因为 Selenium 中的大多数调用都会阻塞直到完成。要真正利用 Grid 提供的并行化,您应该对代码进行多线程处理。每个 Selenium 对象都有一个线程。

于 2011-08-01T21:54:50.380 回答
0

您不需要多线程测试代码来并行运行 selenium 实例(尽管如果您真的想这样做也可以)。处理线程分叉的框架可以为您完成,例如 TestNG、Maven Surefire 或 Gradle。例如,我的项目通过演示使用 Gradle 在单台计算机上通过网格运行多个实例来分叉线程/实例来证明这一点:https ://github.com/djangofan/selenium-gradle-example

于 2013-12-26T22:56:07.810 回答