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

Техники локализации плавающих дефектов
онлайн, начало 17 августа
Школа для начинающих тестировщиков
онлайн, начало 20 августа
Программирование на Python для тестировщиков
онлайн, начало 14 августа
Тестирование без требований
онлайн, начало 17 августа
Фотография

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

#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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


Отправлено 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
  • 767 сообщений


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

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

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

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


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



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

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

Яндекс.Метрика
Реклама на портале