Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Параллельный запуск тестов TestNG, Maven

selenium
webdriver
testng
java
Теги: #<Tag:0x00007f7b62bb5960> #<Tag:0x00007f7b62bb55f0> #<Tag:0x00007f7b62bb54b0> #<Tag:0x00007f7b62bb5000>

(Alexey Bes) #1

Добрый день, видел уже подобную тему на форуме, но не нашел там решение проблемы.
Я хочу запустить два теста параллельно. Сделал файл testng.xml

 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
 <suite name="Custom suite" verbose="1">
     <test name="TestParallel" parallel="methods" thread-count="2">
         <classes>
             <class name="GoogleTest">
         </class></classes>
     </test>
 </suite>```

И сами тесты:

``public class GoogleTest {

  public WebDriver driver;

 @BeforeMethod
 public void setUp()  {
     System.setProperty("webdriver.chrome.driver", "c:\\Documents and Settings\\adlchara\\IdeaProjects\\Sel\\libss\\chromedriver.exe");
     driver = new ChromeDriver();
     driver.manage().window().maximize();
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 }

 @Test
 public void testRobert() {
     driver.get("http://google.ru");
     driver.findElement(By.name("q")).sendKeys("Роберт — Википедия");
     driver.findElement(By.xpath(".//*[@id='sblsbb']/button")).click();
     driver.findElement(By.linkText("Роберт — Википедия")).click();
 }
 @Test
 public void testPolson() {
     driver.get("http://google.ru");
     driver.findElement(By.name("q")).sendKeys("Полсон");
     driver.findElement(By.xpath(".//*[@id='sblsbb']/button")).click();
     driver.findElement(By.linkText("Полсон, Генри — Википедия")).click();
 }

 @AfterMethod
 public void tearDown() {
     driver.quit();
 }

}``

Статики нет, но тест выполняется только в одном браузере и кириллица пишется в таком виде "РоберС". Пробовал писать разные варианты testng.xml но все равно не решил проблему.

#2

Проблема заключается в том, что каждый паралельный метод не знает сессию WebDriver которая ему принадлежит (вызывается до метода). Вы создаете 2 сессии но кому какая не говорите :smile:

Можно инициализировать драйвер в самом методе.

Или как вариант распаралеливать так

<suite name="TestSuite" thread-count="2" parallel="tests" > <test name="Test1"> <classes> <class name="GoogleTest"> <methods><include name="testRobert" /></methods> </class> </classes> </test> <test name="Test2"> <classes> <class name="GoogleTest"> <methods><include name="testPolson" /></methods> </class> </classes> </test> </suite>


(Taras) #3

или ThreadLocal поможет


(Alexey Bes) #4

Спасибо, второй вариант помог,а с объявлением драйвера, что-то не получилось. А на счет кодировки не знаете в чем может быть проблема? При запуске тестов с IDE все нормально на кириллице пишется, а при запуске через Maven пишется в таком виде “Р РѕР±РµСЂС”


#5

(Alexey Bes) #6

Спасибо! Помогло.


(Andrey Melnichenko) #7

добрый день всем, проблема та же - пытаюсь распаралелить запуск тестов но по классам и не получается, подскажите куда копать
вот проект