Я новичок в использовании TestNG и программирования на Java в целом, и у меня есть вопрос относительно выполнения тестов с dataprovider в параллельном режиме,
чтобы запускать тестовые примеры поставщика данных на нескольких вкладках в одном хромированном окне вместо многих окон, я использовал селен 4, который позволяет открывать и переключаться на новую вкладку, используя следующий код
driver.switchTo().newWindow(WindowType.TAB);
Итак, я написал этот код, который успешно запускает тестовые случаи в последовательном режиме, но когда я запускаю его в параллельном режиме, он реализует каждую строку отдельно, прежде чем перейти к другой строке,
следовательно, он открывает 3 вкладки одновременно, затем он открывает ссылку на последней вкладке 3 раза и, наконец, пытается выполнить 3 поиска одновременно и, следовательно, не может их выполнить.
В результате я обнаружил, что testNG создает единый веб-драйвер для управления всеми вкладками, что логично привести к сбою тестов в параллельном режиме.
Это код:
package com.mycompany.app;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WindowType;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class testTab {
WebDriver driver;
@BeforeTest
public void beforeTest() {
System.setProperty("webdriver.chrome.driver", "C:\\Browsers drivers\\chromedriver.exe");
driver = new ChromeDriver();
}
@BeforeMethod
public void newTab() {
driver.switchTo().newWindow(WindowType.TAB);
}
@Test(dataProvider = "getData")
public void testAmazon1(String search_word) {
driver.get("https://www.google.com/");
driver.findElement(By.xpath("//input[@name='q']")).sendKeys(search_word + (Keys.RETURN));
}
@DataProvider(parallel=true)
public Object[][] getData() {
Object[][] data = new Object[3][1];
data[0][0] = "bihi";
data[1][0] = "boutfounast";
data[2][0] = "hmad l9rran";
return data;
}
}
Это XML-файл
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="My Sample Suite" parallel="methods" thread-count="3">
<test name="Amazon test">
<classes>
<class name="com.mycompany.app.testTab"></class>
</classes>
</test>
</suite>
Есть ли способ создать веб-драйвер для каждого теста? Прошу прощения за неточность и спасибо за ответы.