параллельное выполнение селеновой сетки

это из селеновой сетки. Как написать код 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>

person senzacionale    schedule 01.08.2011    source источник


Ответы (3)


Почему есть параметр

<arg value="-parallel"/>?

Это для testng. Это запустит все методы / классы / тесты параллельно, а не последовательно. Подробнее об этом свойстве можно узнать здесь. Вы зарегистрировали 3 RC, и в идеале вы должны увидеть, что все 3 используются для выполнения. Вы можете проверить ссылку на консоль сетки, чтобы увидеть использование - http://localhost:4444/console, где localhost - это IP-адрес, на котором работает концентратор, а порт - это номер порта, который прослушивает концентратор.

РЕДАКТИРОВАТЬ: измените свой код, чтобы он указывал на порт концентратора селена, а не на порт RC. По умолчанию порт концентратора - 4444. Также убедитесь, что вы запустили узлы RC со средой * iehta.

`ISelenium selenium1 = new DefaultSelenium("localhost", 4444, "*iehta",` "http://localhost/");
person A.J    schedule 02.08.2011
comment
спасибо за ответ. Все это правда, но в Active Remote Control нет RC. Это нормально? - person senzacionale; 02.08.2011
comment
После запуска теста вы должны увидеть RC под Active Remote Control. У вашего кода возникла проблема. Я обновил свой ответ. - person A.J; 02.08.2011

То, что вы делаете, будет работать, но будет медленным и почти таким же плохим, как если бы вы выполняли это по-настоящему последовательным образом. Это связано с тем, что большинство вызовов в Selenium блокируются до завершения. Чтобы действительно воспользоваться преимуществами распараллеливания, предлагаемого Grid, вы должны использовать многопоточность вашего кода. Создайте по одному потоку для каждого объекта Selenium.

person Mike Kwan    schedule 01.08.2011
comment
Хорошо, теперь я создаю один поток для объекта селена ech. но я не думаю, что это намного быстрее, или я ошибаюсь. как тоже узнать, есть ли параллельное выполнение? - person senzacionale; 02.08.2011

Вам не нужно выполнять многопоточность вашего тестового кода для параллельного запуска экземпляров селена (хотя вы могли бы, если бы действительно захотели). Фреймворк, который обрабатывает разветвление потоков, может сделать это за вас, например TestNG, Maven Surefire или Gradle. Например, мой проект доказывает это, демонстрируя несколько экземпляров, работающих через сетку на одном компьютере с использованием Gradle для ветвления потоков / экземпляров: https://github.com/djangofan/selenium-gradle-example

person djangofan    schedule 26.12.2013