selenium - 无法通过 TestNG Dataprovider 并行运行超过 10 个测试

标签 selenium selenium-webdriver selenium-grid remotewebdriver testng-dataprovider

嗨,我设计了一个并行运行的 Selenium 测试 (25)

@Test(dataProvider = "getData" )
public void multiUserTest(String url, String username, String password)
        throws InterruptedException, IOException, FindFailed {

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setBrowserName(prop.getProperty("browserName"));
    capabilities.setPlatform(Platform.WINDOWS);
    RemoteWebDriver driver = new RemoteWebDriver(new URL(prop.getProperty("url")), capabilities);

    WebDriverWait wait = new WebDriverWait(driver, 720); // 12 minutes wait.
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

    try {
        driver.get(url);
        driver.findElement(By.xpath(prop.getProperty("username"))).sendKeys(username);
        driver.findElement(By.xpath(prop.getProperty("password"))).sendKeys(password);
        driver.findElement(By.xpath(prop.getProperty("signin"))).click();
        }catch (Exception e) {
        e.printStackTrace();
    }

我的数据提供商

@DataProvider(parallel = true)
public Object[][] getData() {

    Object data[][] = new Object[25][3];
    // row 1
    data[0][0] = "http:XXXX/login.html";
    data[0][1] = "XXX1@gmail.com";
    data[0][2] = "XX@123";

    // row 2
    data[1][0] = "http:XXXX/login.html";
    data[1][1] = "XXX2@gmail.com";
    data[1][2] = "XX@123";
    ..........


    // row 25
    data[24][0] = "http:XXXX/login.html";
    data[24][1] = "XXX25@gmail.com";
    data[24][2] = "XX@123";

我的 xml 文件是

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods"  thread-count="1" data-provider-thread-count="25">
  <test name="Test">
    <classes>
      <class name="XXX.MultiUserGuiTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

现在,当我运行上述测试时,它一次性运行 10 个测试,第 10 个测试完成后,接下来的 10 个测试开始执行,后面是 5 个测试,但是 我想运行我的测试,其中 25 应该立即开始执行

仅供引用,我添加了我的 ec2 实例的屏幕截图。有 25 个 chrome,已启动并运行,请查看鼠标悬停在 chrome 浏览器上方 enter image description here

最佳答案

解决问题的方法:

@BeforeClass
    public void setupClassName(ITestContext context) {
        context.getCurrentXmlTest().getSuite().setDataProviderThreadCount(100);
        context.getCurrentXmlTest().getSuite().setPreserveOrder(false);
    }

关于selenium - 无法通过 TestNG Dataprovider 并行运行超过 10 个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439359/

相关文章:

ajax - WebRat+Selenium WebDriver : wait for ajax to be completed

java - 在 Chrome 中使用 Selenium 无法在新打开的选项卡中转到 "chrome://downloads/"

python - 使用 Python 和 Selenium Webdriver 存储动态下拉选项

python - 使用selenium在.click()之后获取新的html

python - 如何使用 selenium python 动态单击加载按钮?

java - 无法为 IE8 浏览器添加 Cookie(Java、Selenium Grid、WebDriver 2.41.0)

selenium - 如果指定了直接节点ip,则IE11测试将运行,但如果指定了网格集线器url,则IE11测试将失败

python - Selenium 网格: install chrome extensions on session

selenium - 如何设置 Fluentlenium 以在不同的浏览器驱动程序中运行?

python - Selenium 未找到特定元素