使用webdriver在网格中无法打开多个chrome实例

时间:2013-02-21 10:42:48

标签: webdriver testng selenium-grid

要使用testng和selenium网格运行并行测试,我确实遵循了步骤。

1)注册的枢纽和网格: -

java -jar selenium-server-standalone-2.26.0.jar -role hub
java -jar selenium-server-standalone-2.26.0.jar -role node -  
Dwebdriver.chrome.driver="C:\D\chromedriver.exe" -hub 
http://localhost:4444/grid/register -browser  browserName=chrome,version=24,maxInstances=15,platform=WINDOWS

2)提供功能并实例化RemoteWebDriver的Java代码。

  DesiredCapabilities capability=null;
    capability= DesiredCapabilities.chrome();
    capability.setBrowserName("chrome");
    capability.setVersion("24");
    capability.setPlatform(org.openqa.selenium.Platform.WINDOWS);
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
    driver.get(browsingUrl);

3)Suite.xml

   <suite name="testapp" parallel="tests" >
<test verbose="2" name="testapp" annotations="JDK">
    <classes>
        <class name="com.testapp" />
    </classes>
</test>

   <profile>
      <id>testapp</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
                <parallel>tests</parallel>
                   <threadCount>10</threadCount> 
                  <suiteXmlFiles>                          
                      <suiteXmlFile>target/test-classes/Suite.xml</suiteXmlFile>                     
                  </suiteXmlFiles>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile> 

运行maven测试

  mvn test -Ptestapp

调用集线器配置

http://localhost:4444/grid/console?config=true&configDebug=true

告诉我有15个chrome实例可用,但运行mvn命令只打开了一个chrome实例。如果我做错了,请告诉我。

2 个答案:

答案 0 :(得分:2)

在Suite.xml中,您配置了属性parallel = tests。但实际上,xml文件中只有一个test标记。因此,没有机会启动两个chrome实例。

请参阅Testng文档here for more about parallelism.

修改

  <suite name="testapp" parallel="classes" >
    <test verbose="2" name="testapp" annotations="JDK">
      <classes>
        <class name="com.testapp"/>
        <class name="com.testapp"/>
      </classes>
    </test>
  </suite>

通过上述XML文件,类@Test中存在的com.testapp方法将在两个不同的线程中运行(即并行模式)。

如果要以并行方式运行单个@Test方法,则将XML文件parallel属性配置为methods

答案 1 :(得分:0)

在testng中,对于parallel属性,parallel =“methods”表示所有使用@Test注释的方法都是并行运行的。

parallel =“tests”表示,如果你有

<test name = "P1">
   <classes>....</classes>
</test>
<test name = "P2">
   <classes>....</classes>
</test>

P1和P2将并行运行。如果两个测试中的类相同,则可能会发生相同的方法并行开始运行。

另外,pom部分有

<parallel>tests</parallel>
<threadCount>10</threadCount> 

将始终被您在testng.xml中指定的内容覆盖。所以你不需要你的surefire部分来包含那些数据,因为如果你指定一个xml,它会占用你在xml中指定的内容,如果xml没有为parallel指定任何值,那么默认值false将覆盖您在ur pom中指定的内容。