У меня есть тест testNG, который вернет список URL-адресов для тестирования, и он будет выполняться один за другим. Я хочу, чтобы одновременно запускались по крайней мере 2 URL-адреса .. что было бы лучшим способом сделать это?
@Test
public static void test1() throws Exception {
Configuration conf = Configuration.getConfiguration();
List<String> urls = conf.getListOfUrls(); // returns list of urls to test against
setup(); //has capabilities for IE browser
for (int i = 0; i < urls.size(); i++) {
WebDriver.get(urls.get(z));
//do stuff
}
Возможный дубликат Параллельное выполнение TestNG




Вы можете использовать параллельное выполнение, как показано ниже:
package com.demo.core;
import java.net.MalformedURLException;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class PlayField {
private WebDriver driver;
public static WebDriver getChromeDriver() throws MalformedURLException {
System.setProperty("webdriver.chrome.driver",
"D:\\ECLIPSE-WORKSPACE\\playground\\src\\main\\resources\\chromedriver-2.35.exe");
return new ChromeDriver();
}
@BeforeMethod
public void setUp() throws MalformedURLException {
driver = getChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
@Test
public void test1() throws MalformedURLException, InterruptedException {
driver.navigate().to("Url1");
// do anything
}
@Test
public void test2() throws MalformedURLException, InterruptedException {
driver.navigate().to("Url2");
//do anything
}
}
и в testng.xml:
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name = "First suite" verbose = "8" parallel = "methods" thread-count = "2">
<test name = "Default test1">
<classes>
<class name = "com.demo.core.PlayField">
</class>
</classes>
</test>
</suite>
а затем запустите этот xml с помощью плагина surefire или напрямую. Он одновременно откроет два браузера. Надеюсь, это вам поможет.
Вы должны использовать DataProvider в TestNG, чтобы получить его. Допустим, поставщик данных передает несколько наборов данных, т.е. URL-адреса содержатся в списке urls = conf.getListOfUrls ();
Ниже приведен простой пример:
@Test(dataProvider = "testdata")
public void simpleTest(String url) {
System.setProperty("webdriver.chrome.driver",
System.getProperty("user.dir") + File.separator + "drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get(url);
}
@DataProvider(name = "testdata", parallel=true)
public Object[][] data(){
return new Object[][] {
{"http://www.google.com"},
{"http://www.seleniumhq.org"}
};
спасибо @murali. сейчас он запускает 2 браузера, но проблема в том, что есть действия, которые должны выполняться после открытия браузеров, которое выполняется только в одном из запущенных браузеров. как мне заставить действия запускаться во всех открывающихся экземплярах браузера.
@Noob попробуйте один раз без parallel = true в предоставлении данных, если он работает нормально, нам нужно искать дальше. я посмотрю 2 ряда