Перейти к содержимому

Фотография

Параллельный запуск тестов Все стартует в одном окне браузера

#java#testng#selenium

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 23

#1 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 14:00

Добрый день!
Подскажите, пожалуйста, в чем ошибка?
Хочу запустить тесты параллельно в нескольких окнах браузера, но при запуске в консоли вижу, что стартует несколько потоков, которые почему-то выполняются в одном окне браузера.
Всего 9 тестов, по три теста в каждом тестовом классе. Все тестовые классы наследуются от базового класса, в котором прописаны методы BeforeClass и AfterClass.
Параллельный запуск настраиваю в файле testng.xml <test name="TestProjectPDTC" parallel="classes" thread-count="9" verbose="10">
Базовый класс:
public class ParallelStartBaseClass {
    
    private RemoteWebDriver driver;
    public static ThreadLocal<RemoteWebDriver> tlDriver = new ThreadLocal<>();
 
    public ParallelStartBaseClass(){
        super();
        return;
    }
 
    @BeforeClass
    public void setup(){
 
        System.out.println(Thread.currentThread().getName());
 
        if(tlDriver.get() != null){
            driver= tlDriver.get();
            return;
        }
        final DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        final ChromeOptions options = new ChromeOptions();
        options.addArguments("--lang=en_EN", "--disable-notifications", "--window-size=1200,1080", "--disable-system-timezone-automatic-detection", "--local-timezone");
        capabilities.setCapability(ChromeOptions.CAPABILITY, options);       
        capabilities.setPlatform(Platform.ANY);        
        try {
            driver= new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), capabilities);
            driver.manage().window().maximize();
            WebDriverRunner.setWebDriver(driver);
            tlDriver.set(driver);
            String windowHandle = WebDriverRunner.getWebDriver().getWindowHandle();
            System.out.println(windowHandle);
            System.out.println(Thread.currentThread().getName());
            System.out.println(tlDriver.get().getSessionId());
            Runtime.getRuntime().addShutdownHook(
                    new Thread( ()-> { clearBrowserCache(); driver.quit(); tlDriver.remove();
                        System.out.println("Выход из программы");}));
 
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
 
   @AfterClass
   public void close(){
       closeWebDriver();
       tlDriver.remove();
    }
 
}
 
 
Лог из Idea:
 
мая 14, 2020 3:27:56 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
CDwindow-F0F1D8FD4CA7FC5FA67B30AB7119B6DB
TestNG-test=TestProjectPDTC-3
cb559a0433bcaf699a5d50e57dad8991
 
TestNG-test=TestProjectPDTC-2
TestNG-test=TestProjectPDTC-3
TestNG-test=TestProjectPDTC-1
мая 14, 2020 3:27:25 PM org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
мая 14, 2020 3:27:25 PM org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
мая 14, 2020 3:27:25 PM org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
мая 14, 2020 3:27:29 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org...ticLoggerBinder for further details.
CDwindow-493B44CD0E531190047F02FD2921B4E5
TestNG-test=TestProjectPDTC-2
38b010d74de5eec5fa07719d68fff28c
 
мая 14, 2020 3:27:47 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
CDwindow-ABF75A680BC927A64C419F6302D6596D
TestNG-test=TestProjectPDTC-1
e01dc632c7fe5352a636bb238bb3a7c5
 
===== Invoked methods
  ParallelStartBaseClass.setup()[pri:0, instance:ParallelStart.TestClassOne@4b9e13df] 1268650975
  ParallelStartBaseClass.setup()[pri:0, instance:ParallelStart.ThreeTestClass@475530b9] 1196765369
  ParallelStartBaseClass.setup()[pri:0, instance:ParallelStart.TwoTestClass@2b98378d] 731395981
    TwoTestClass.ThreeTestTwoTestClass()[pri:0, instance:ParallelStart.TwoTestClass@2b98378d] 731395981
  ParallelStartBaseClass.close()[pri:0, instance:ParallelStart.TwoTestClass@2b98378d] 731395981
    TestClassOne.OneTestOneTestClass()[pri:0, instance:ParallelStart.TestClassOne@4b9e13df] 1268650975
    TestClassOne.ThreeTestOneTestClass()[pri:0, instance:ParallelStart.TestClassOne@4b9e13df] 1268650975
    TestClassOne.TwoTestOneTestClass()[pri:0, instance:ParallelStart.TestClassOne@4b9e13df] 1268650975
  ParallelStartBaseClass.close()[pri:0, instance:ParallelStart.TestClassOne@4b9e13df] 1268650975
    ThreeTestClass.OneTestThreeTestClass()[pri:0, instance:ParallelStart.ThreeTestClass@475530b9] 1196765369
    ThreeTestClass.ThreeTestThreeTestClass()[pri:0, instance:ParallelStart.ThreeTestClass@475530b9] 1196765369
    ThreeTestClass.TwoTestThreeTestClass()[pri:0, instance:ParallelStart.ThreeTestClass@475530b9] 1196765369
  ParallelStartBaseClass.close()[pri:0, instance:ParallelStart.ThreeTestClass@475530b9] 1196765369
=====
 
===============================================
TestProjectPDTC
Total tests run: 7, Passes: 7, Failures: 0, Skips: 0
===============================================
 
Выход из программы
Выход из программы
Выход из программы
 
Process finished with exit code 0

  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 мая 2020 - 14:12

В бефоре оставить

создание DesiredCapabilities  и опций
driver = new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), capabilities); 
System.setProperty("selenide.startMaximized", "true");
WebDriverRunner.setWebDriver(driver);
В афтер оставить только closeWebDriver
Всё остальное за вас сделает Селенид.

  • 0

#3 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 14:25

 

В бефоре оставить

создание DesiredCapabilities  и опций
driver = new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), capabilities); 
System.setProperty("selenide.startMaximized", "true");
WebDriverRunner.setWebDriver(driver);
В афтер оставить только closeWebDriver
Всё остальное за вас сделает Селенид.

 

Все сделала, как Вы сказали. Перестало работать вообще)


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 мая 2020 - 14:54

А сделайте так:

WebDriverRunner.setWebDriver(new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), capabilities));

У меня вот так работает:

public class ParallelStartBaseClass {

    @BeforeClass
    public void setup() throws MalformedURLException {
        System.out.println(Thread.currentThread().getName());
        
        final ChromeOptions options = new ChromeOptions();
        options.addArguments("--lang=en_EN", "--disable-notifications", "--window-size=1200,1080", "--disable-system-timezone-automatic-detection", "--local-timezone");
        RemoteWebDriver driver = new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), options);
        WebDriverRunner.setWebDriver(driver);
    }

    @AfterClass
    public void close() {
        closeWebDriver();
    }
}

Локально проверял заменой .setWebDriver(driver); на .setWebDriver(new ChromeDriver(options));


  • 0

#5 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 15:38

А сделайте так:

WebDriverRunner.setWebDriver(new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), capabilities));

У меня вот так работает:

public class ParallelStartBaseClass {

    @BeforeClass
    public void setup() throws MalformedURLException {
        System.out.println(Thread.currentThread().getName());
        
        final ChromeOptions options = new ChromeOptions();
        options.addArguments("--lang=en_EN", "--disable-notifications", "--window-size=1200,1080", "--disable-system-timezone-automatic-detection", "--local-timezone");
        RemoteWebDriver driver = new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), options);
        WebDriverRunner.setWebDriver(driver);
    }

    @AfterClass
    public void close() {
        closeWebDriver();
    }
}

Локально проверял заменой .setWebDriver(driver); на .setWebDriver(new ChromeDriver(options));

Нет, не получилось. Все сделала, как у Вас, а тесты все равно в одном окне браузера шпарит. 

Pom настраивать на параллельный запуск надо? Как-то изменять настройки maven-surefire-plugin? У меня настроено только в testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestProjectPDTC">
<test name="TestProjectPDTC" parallel="classes" thread-count="9" verbose="10">
    <classes>
        <class name="ParallelStart.TestClassOne"/>
        <class name="ParallelStart.TwoTestClass"/>
        <class name="ParallelStart.ThreeTestClass"/>
    </classes>
</test>
</suite>

Может мой вопрос тупым покажется, но зачем тогда нужен ThreadLocal для параллельного запуска тестов? Или это только Selenide "сам все делает", а если без Selenide, то нужно ThreadLocal использоывать?


Сообщение отредактировал OxanaKIseleva: 14 мая 2020 - 15:42

  • 0

#6 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 мая 2020 - 15:40

У меня parallel="methods", ну и тредов для начала поставьте 2.

Селенид всё сделает - это я про то, что не надо где-то сохранять все создаваемые драйвера, WebDriverRunner всё сам сохраняет и отслеживает какой открыть, какой закрыть.


  • 0

#7 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 15:47

У меня parallel="methods", ну и тредов для начала поставьте 2.

Селенид всё сделает - это я про то, что не надо где-то сохранять все создаваемые драйвера, WebDriverRunner всё сам сохраняет и отслеживает какой открыть, какой закрыть.

Сделала methods, но теперь проблемы с закрытием driver. Одно окно закрыл остальные висят и тормозят открытие другихOWjDRz.jpgA2XnYH.jpg


  • 0

#8 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 15:59

Из-за того, что driver не закрывается корректно, решила реализовать так:

@AfterMethod
   public void close(){
       closeWebDriver();
    }

Типа закрывать driver после каждого тестового метода. Не знаю, насколько верно. По идее, если Selenide все отслеживает, он это сделать должен был. Вот это я так и не поняла. 

С такой реализацией все ок. Но боюсь, что это просто "костыли"(


  • 0

#9 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 мая 2020 - 16:08

Не,не, я ошибся, да надо классы в параллели.

Афтерметод - не надо, оставьте афтер класс. Всё должно работать:

===== Invoked methods
  ParallelStartBaseClass.setup()[pri:0, instance:TestClass2@5b275dab] 1529306539
  ParallelStartBaseClass.setup()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass2.test1()[pri:0, instance:TestClass2@5b275dab] 1529306539
    TestClass1.test3()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass1.test4()[pri:0, instance:TestClass1@523884b2] 1379435698
  ParallelStartBaseClass.close()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass2.test2()[pri:0, instance:TestClass2@5b275dab] 1529306539
  ParallelStartBaseClass.close()[pri:0, instance:TestClass2@5b275dab] 1529306539
=====
PASSED: test3
PASSED: test4
PASSED: test1
PASSED: test2

test1 и test2 - в одном потоке, 3 и 4 в другом

 

Версия селенида какая? обновите на 5.10.0


  • 0

#10 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 16:21

Не,не, я ошибся, да надо классы в параллели.

Афтерметод - не надо, оставьте афтер класс. Всё должно работать:

===== Invoked methods
ParallelStartBaseClass.setup()[pri:0, instance:TestClass2Tests@5b275dab] 1529306539
ParallelStartBaseClass.setup()[pri:0, instance:TestClass1Tests@523884b2] 1379435698
TestClass2Tests.test1()[pri:0, instance:TestClass2Tests@5b275dab] 1529306539
TestClass1Tests.test1()[pri:0, instance:TestClass1Tests@523884b2] 1379435698
TestClass1Tests.test2()[pri:0, instance:TestClass1Tests@523884b2] 1379435698
ParallelStartBaseClass.close()[pri:0, instance:TestClass1Tests@523884b2] 1379435698
TestClass2Tests.test2()[pri:0, instance:TestClass2Tests@5b275dab] 1529306539
ParallelStartBaseClass.close()[pri:0, instance:TestClass2Tests@5b275dab] 1529306539
=====

Версия селенида какая? обновите на 5.10.0

Нет. Запустил 2 потока, а тесты в одном окне шпарит. 

Вот реализация:

public class ParallelStartBaseClass {

    public ParallelStartBaseClass(){
        super();
        return;
    }

    @BeforeClass
    public void setup(){

        System.out.println(Thread.currentThread().getName());

        final DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        final ChromeOptions options = new ChromeOptions();
        options.addArguments("--lang=en_EN", "--disable-notifications", "--window-size=1200,1080", "--disable-system-timezone-automatic-detection", "--local-timezone");
        capabilities.setCapability(ChromeOptions.CAPABILITY, options);        
        capabilities.setPlatform(Platform.ANY);
        try {

            WebDriverRunner.setWebDriver(new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), capabilities));


        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }

   @AfterClass
   public void close(){
       closeWebDriver();
    }
}
<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestProjectPDTC">
<test name="TestProjectPDTC" parallel="classes" thread-count="2" verbose="10">
    <classes>
        <class name="ParallelStart.TestClassOne"/>
        <class name="ParallelStart.TwoTestClass"/>
        <class name="ParallelStart.ThreeTestClass"/>
    </classes>
</test>
</suite>

Тестовый класс для примера:

public class ThreeTestClass extends ParallelStartBaseClass {

    @Test
    public void OneTestThreeTestClass(){
        Selenide.open("https://github.com/");
        Selenide.sleep(15000);
    }

    @Test
    public void TwoTestThreeTestClass(){
        Selenide.open("https://poi.apache.org/");
        Selenide.sleep(15000);
    }

    @Test
    public void ThreeTestThreeTestClass() throws InterruptedException {
        Selenide.open("https://selenide.gitbooks.io/");
        Thread.sleep(10000);
    }

}

  • 0

#11 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 16:29

Реализацию базового класса оставила, как Вы сказали, аннотации @AfterClass и @BeforeClass. Поменяла testng.xml, заменила classes на methods

<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestProjectPDTC">
<test name="TestProjectPDTC" parallel="methods" thread-count="2" verbose="10">
    <classes>
        <class name="ParallelStart.TestClassOne"/>
        <class name="ParallelStart.TwoTestClass"/>
        <class name="ParallelStart.ThreeTestClass"/>
    </classes>
</test>
</suite>

Пока заработало, так как надо. Сейчас гоняю в отладчике, ищу, что м б не так. Но вроде работает.

 

В любом случае, огромное спасибо Вам за помошь и реальные советы.


  • 0

#12 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 мая 2020 - 17:21

Напишите тут для проверки как у вас вывелось:

===== Invoked methods


  • 0

#13 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 17:41

Реализацию базового класса оставила, как Вы сказали, аннотации @AfterClass и @BeforeClass. Поменяла testng.xml, заменила classes на methods

<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestProjectPDTC">
<test name="TestProjectPDTC" parallel="methods" thread-count="2" verbose="10">
    <classes>
        <class name="ParallelStart.TestClassOne"/>
        <class name="ParallelStart.TwoTestClass"/>
        <class name="ParallelStart.ThreeTestClass"/>
    </classes>
</test>
</suite>

Пока заработало, так как надо. Сейчас гоняю в отладчике, ищу, что м б не так. Но вроде работает.

 

В любом случае, огромное спасибо Вам за помошь и реальные советы.

В итоге, выставила число потоков >2 и о5 25.  Возвращаюсь к варианту parallel="classes" и разбираюсь, что не так


  • 0

#14 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 мая 2020 - 18:22

Ещё раз.

У меня заработало так - <test name="TestProjectPDTC" parallel="classes" thread-count="2" verbose="10">

С Параллель-метод - работает некорректно.

Получил что тесты 1-2 и 3-4 (из разных class name=) работают в разных потоках:

===== Invoked methods
  ParallelStartBaseClass.setup()[pri:0, instance:TestClass2@5b275dab] 1529306539
  ParallelStartBaseClass.setup()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass1.test1()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass2.test3()[pri:0, instance:TestClass2@5b275dab] 1529306539
    TestClass1.test2()[pri:0, instance:TestClass1@523884b2] 1379435698
  ParallelStartBaseClass.close()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass2.test4()[pri:0, instance:TestClass2@5b275dab] 1529306539
  ParallelStartBaseClass.close()[pri:0, instance:TestClass2@5b275dab] 1529306539
=====

  • 0

#15 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 14 мая 2020 - 19:24

 

Ещё раз.

У меня заработало так - <test name="TestProjectPDTC" parallel="classes" thread-count="2" verbose="10">

С Параллель-метод - работает некорректно.

Получил что тесты 1-2 и 3-4 (из разных class name=) работают в разных потоках:

===== Invoked methods
  ParallelStartBaseClass.setup()[pri:0, instance:TestClass2@5b275dab] 1529306539
  ParallelStartBaseClass.setup()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass1.test1()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass2.test3()[pri:0, instance:TestClass2@5b275dab] 1529306539
    TestClass1.test2()[pri:0, instance:TestClass1@523884b2] 1379435698
  ParallelStartBaseClass.close()[pri:0, instance:TestClass1@523884b2] 1379435698
    TestClass2.test4()[pri:0, instance:TestClass2@5b275dab] 1529306539
  ParallelStartBaseClass.close()[pri:0, instance:TestClass2@5b275dab] 1529306539
=====

Запустила в 2 потока с 

<test name="TestProjectPDTC" parallel="classes" thread-count="2" verbose="10">

все отработало PASSED, но запускается только одно окно браузера, и с ним последовательно работают потоки. А надо параллельно.

 

Ниже лог из консоли Идеи (3 тестовых класса в 2 потока):

===== Invoked methods
  ParallelStartBaseClass.setup()[pri:0, instance:ParallelStart.TestClassOne@3c0f93f1] 1007653873
  ParallelStartBaseClass.setup()[pri:0, instance:ParallelStart.TwoTestClass@31dc339b] 836514715
    TwoTestClass.ThreeTestTwoTestClass()[pri:0, instance:ParallelStart.TwoTestClass@31dc339b] 836514715
  ParallelStartBaseClass.close()[pri:0, instance:ParallelStart.TwoTestClass@31dc339b] 836514715
  ParallelStartBaseClass.setup()[pri:0, instance:ParallelStart.ThreeTestClass@544fe44c] 1414521932
    TestClassOne.OneTestOneTestClass()[pri:0, instance:ParallelStart.TestClassOne@3c0f93f1] 1007653873
    TestClassOne.ThreeTestOneTestClass()[pri:0, instance:ParallelStart.TestClassOne@3c0f93f1] 1007653873
    TestClassOne.TwoTestOneTestClass()[pri:0, instance:ParallelStart.TestClassOne@3c0f93f1] 1007653873
  ParallelStartBaseClass.close()[pri:0, instance:ParallelStart.TestClassOne@3c0f93f1] 1007653873
    ThreeTestClass.OneTestThreeTestClass()[pri:0, instance:ParallelStart.ThreeTestClass@544fe44c] 1414521932
    ThreeTestClass.ThreeTestThreeTestClass()[pri:0, instance:ParallelStart.ThreeTestClass@544fe44c] 1414521932
    ThreeTestClass.TwoTestThreeTestClass()[pri:0, instance:ParallelStart.ThreeTestClass@544fe44c] 1414521932
  ParallelStartBaseClass.close()[pri:0, instance:ParallelStart.ThreeTestClass@544fe44c] 1414521932
=====


  • 0

#16 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 мая 2020 - 22:01

Вы, наверно устали просто, и не замечаете что у вас открывается 2 окна браузера )) Вы сдвиньте одно окно, под ним будет ещё одно.

По логу всё корректно, всё отработало.

У вас сначала запустились в двух потоках TestClassOne и TwoTestClass, т.к. TwoTestClass имеет только 1 тест, он быстро отработал и закрылся, и запустился ThreeTestClass в другом потоке.


  • 0

#17 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 15 мая 2020 - 09:15

Вы, наверно устали просто, и не замечаете что у вас открывается 2 окна браузера )) Вы сдвиньте одно окно, под ним будет ещё одно.

По логу всё корректно, всё отработало.

У вас сначала запустились в двух потоках TestClassOne и TwoTestClass, т.к. TwoTestClass имеет только 1 тест, он быстро отработал и закрылся, и запустился ThreeTestClass в другом потоке.

Добрый день!

Как бы я хотела, чтобы Вы были правы, но увы. Для теста добавила в каждый тестовый метод добавила Selenide.sleep(30000);

Чтобы тест выполнялся медленнее и можно было отловить открытие окон браузера. Вижу что 2 процесса запустилось, 1 окно открылось. Один тест выполняется в браузере, второй setup() ждет и выполняется только после того, как выполниться другой тест. На скрине видно.

8UHPN3.jpg

 

https://snipboard.io/8UHPN3.jpg


  • 0

#18 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 15 мая 2020 - 10:14

А пом ваш покажите?

Я так запускаю:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <suiteXmlFiles>testng.xml</suiteXmlFiles>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

Вот так отрабатывает: tests.gif


  • 0

#19 OxanaKIseleva

OxanaKIseleva

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Киселева Оксана


Отправлено 15 мая 2020 - 12:36

А пом ваш покажите?

Я так запускаю:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <suiteXmlFiles>testng.xml</suiteXmlFiles>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

Вот так отрабатывает: tests.gif

Pom такой:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <reportsDirectory>${basedir}/testng-output</reportsDirectory>
                    <!--<testFailureIgnore>true</testFailureIgnore>-->
                    <suiteXmlFiles>
                        <suiteXmlFile>${suiteXmlFile}.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

Для aspectj.version 

<aspectj.version>1.9.4</aspectj.version>

Может другие настройки нужны, чтоб потоки в разных окнах браузера запускались?


  • 0

#20 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 15 мая 2020 - 12:51

Ничего криминального не вижу.

Я в гифке всё показал, ищите разницу вашего кода с моим.

Я запускаю командой mvn test без всяких доп настроек. А у вас в Идее профиль какой-то сохранён на запуск теста, вот надо смотреть там настройки.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных