- Форум тестировщиков
- → Публикации OxanaKIseleva
Публикации OxanaKIseleva
20 публикаций создано OxanaKIseleva (учитываются публикации только с 05 мая 2023)
По типу контента
По пользователю
#176134 Запуск нескольких экземпляров WebDriver в одном тесте
Отправлено автор: OxanaKIseleva 07 апреля 2020 - 11:44 в Selenium - Functional Testing
Selenium+Java+Testng
Добрый день!
Просьба помочь с реализацией теста. Как правильно запустить и закрыть несколько экземпляров драйвера в рамках одного теста.
Если конкретно:
У меня вопрос как правильнее запустить оба driver и как правильно в конце теста убить оба? А также как правильно переключаться между двумя driver в одном тесте?
Задача:
1. Запустить Browser 1, например, Chrome.
2. В Chrome открытть несколько вкладок, выполнить на них какие-то действия. Запомнить cookie
3. Запустить Browser 2, например, FireFox.
4. В FireFox открытть несколько вкладок, выполнить на них какие-то действия. Запомнить cookie.
5. Сравнить cookie полученные из Browser 1 и Browser 2.
У меня реализовано так:
есть базовый класс BaseTestClass для теста (класс теста его наследник, FirstTestClass extends BaseTestClass), в @BeforeMethod setup() которого реализовала запуск Chrome.
затем в теле самого теста запускаю Fifefox.
Убиваю оба драйвера в
@AfterMethod
public void after(){
Selenide.clearBrowserCookies();
closeWebDriver();
clearBrowserCache();
driver.quit();
}
#176137 Запуск нескольких экземпляров WebDriver в одном тесте
Отправлено автор: OxanaKIseleva 07 апреля 2020 - 13:15 в Selenium - Functional Testing
Не в конце теста надо убивать оба драйвера, а проще же последовательно - нужный браузер отработал - убил. Следующий запустил - отработал - убил.
а переключаться между драйверами как лучше? например, если что-то сделать в хроме, потом нужно что-то сделать в firefox потом о5 что-то в хроме и снова в файерфоксе, ну а потом уже их убить?
#176151 Selenium Testng Java Работа с несколькими драйверами в одном тесте
Отправлено автор: OxanaKIseleva 08 апреля 2020 - 08:12 в Selenium - Functional Testing
Добрый день!
Подскажите, пожалуйста, как правильно переключаться между двумя экземплярами драйвера WebDriver в одном тесте? Как сделать, чтобы оба драйвера всегда были доступны в тесте и не удалялись?
Первый экземпляр driver для Chroma создается в базовом классе в методе setup с @BeforeMethod при запуске теста. Второй driver для FireFox создается в самом тесте.
Driver для FireFox создается в конструкторе класса специально созданного для создания и конфигурирования driver для Firefox.
Код теста:
@Test(groups = "ui", description = "....")
public void runChromeFFTest() {
//в запущенном окне Chroma открываю url
Selenide.open("http://seleniumhq.org/");
//получаю дескриптор окна Chroma
String windowChromeHandle = WebDriverRunner.getWebDriver().getWindowHandle();
System.out.println(windowChromeHandle);
//Запускаю FireFox
OtherBrowserRunner other = new OtherBrowserRunner("firefox");
//в запущенном окне FireFox открываю произвольный url
other.open("http://seleniumhq.org/");
//Получаю десткриптор окна FireFox
String windowFireFoxHandle = WebDriverRunner.getWebDriver().getWindowHandle();
//пробую переключиться на окно Chroma
WebDriverRunner.getWebDriver().switchTo().window(windowChromeHandle);
other.close();
}
Код setup()
@BeforeMethod
public void setup() {
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.WINDOWS);
try {
driver = new RemoteWebDriver(URI.create("http://localhost:5555/wd/hub").toURL(), capabilities);
driver.manage().window().maximize();
WebDriverRunner.setWebDriver(driver);
String windowHandle = WebDriverRunner.getWebDriver().getWindowHandle();
System.out.println(windowHandle);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
Код конструктора OtherBrowserRunner
public OtherBrowserRunner(String _browser) {
BROWSER_TYPE = _browser;
switch (BROWSER_TYPE) {
case "firefox":
final DesiredCapabilities capabilities_ff = DesiredCapabilities.firefox();
final FirefoxOptions options_ff = new FirefoxOptions();
options_ff.addArguments("--lang=en_EN", "--disable-notifications", "--start-maximized", "--disable-system-timezone-automatic-detection", "--local-timezone");
capabilities_ff.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options_ff);
capabilities_ff.setCapability("enableVideo", "false");
capabilities_ff.setCapability(FirefoxDriver.MARIONETTE, true);
capabilities_ff.setPlatform(Platform.WINDOWS);
try {
if(WebDriverRunner.getWebDriver() != null){
driver_ff = new RemoteWebDriver(URI.create("http://localhost:5555/wd/hub").toURL(), capabilities_ff);
WebDriverRunner runner = new WebDriverRunner();
runner.setWebDriver(driver_ff);
driver_ff.manage().window().maximize();
String windowHandle = WebDriverRunner.getWebDriver().getWindowHandle();
System.out.println(windowHandle);
} else {
driver_ff = new RemoteWebDriver(URI.create("http://localhost:5555/wd/hub").toURL(), capabilities_ff);
WebDriverRunner.setWebDriver(driver_ff);
driver_ff.manage().window().maximize();
String windowHandle = WebDriverRunner.getWebDriver().getWindowHandle();
System.out.println(windowHandle);
}
}
catch (Exception e) {
e.printStackTrace();
}
break;
case "IE":
break;
case "YANDEX":
break;
}
}
Код метода open() для OtherBrowserRunner
public void open(String _url) { Selenide.open(_url); }
В результате возвращается ошибка
org.openqa.selenium.NoSuchWindowException: Unable to locate window: CDwindow-82A02A38A1E123E586017229486E23F2
#176155 Selenium Testng Java Работа с несколькими драйверами в одном тесте
Отправлено автор: OxanaKIseleva 08 апреля 2020 - 12:36 в Selenium - Functional Testing
Спасибо!
Вот это понравилось:
Возможность открывать два браузера в одном тестеПрежде всего: не используйте эту возможность!
Открывать два браузера в одном тесте - это в большинстве случаев плохая практика.
#176158 Selenium Testng Java Работа с несколькими драйверами в одном тесте
Отправлено автор: OxanaKIseleva 08 апреля 2020 - 13:37 в Selenium - Functional Testing
Возвращаясь к моему ответу из другого поста - надо - так надо )))
Вам же это для одного теста надо, но видно по самой сути - вы занимаетесь тестированием браузера, а не приложения, достаточно просто проверить сохранённую куку в любом браузере на корректность.
Изначально, попыталась раздробить одну большую проблему на простые части. Видимо, это было не оч хорошим решением. Я новичок в автотестировании. Сам тест называется "Проверка корректного входа в разных вкладках/браузерах/устройствах" и в нем требуется скакать по разным браузерам и их вкладкам авторизовываться там, проверять куки. Т.е. проверяется авотризация, а не браузер.
#176162 Selenium Testng Java Работа с несколькими драйверами в одном тесте
Отправлено автор: OxanaKIseleva 08 апреля 2020 - 19:45 в Selenium - Functional Testing
Так и это получается идёт тестирование браузера)) Достаточно проверить что авторизация происходит. Ну ещё, конечно, проверить что она происходит просто в нужных браузерах (смотрится по статистике посещения, берётся там топ 5 и в них проверяется). но и из этих топ 5, скорее всего 3-4 будут на движке хромиума, и получается что достаточно будет проверить в 1 хроме. Но опять же из глобальных хотелок, вам просто надо сделать ваш фреймворк независимым от типа браузера, и в начале запуска указывать в каком браузере выполняться (а поддержку браузеров вынести в отдельный класс, либо использовать ту что уже имеет Селенид https://github.com/s...selenide-uses).
Спасибо большое
#176528 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 14:00 в Selenium - Functional Testing
Добрый день!
Подскажите, пожалуйста, в чем ошибка?
Хочу запустить тесты параллельно в нескольких окнах браузера, но при запуске в консоли вижу, что стартует несколько потоков, которые почему-то выполняются в одном окне браузера.
Всего 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
#176531 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 14:25 в Selenium - Functional Testing
В бефоре оставить
создание DesiredCapabilities и опций driver = new RemoteWebDriver(URI.create("http://localhost:5557/wd/hub").toURL(), capabilities); System.setProperty("selenide.startMaximized", "true"); WebDriverRunner.setWebDriver(driver);В афтер оставить только closeWebDriverВсё остальное за вас сделает Селенид.
Все сделала, как Вы сказали. Перестало работать вообще)
#176534 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 15:38 в Selenium - Functional Testing
А сделайте так:
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 использоывать?
#176536 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 15:47 в Selenium - Functional Testing
У меня parallel="methods", ну и тредов для начала поставьте 2.
Селенид всё сделает - это я про то, что не надо где-то сохранять все создаваемые драйвера, WebDriverRunner всё сам сохраняет и отслеживает какой открыть, какой закрыть.
Сделала methods, но теперь проблемы с закрытием driver. Одно окно закрыл остальные висят и тормозят открытие других
#176539 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 15:59 в Selenium - Functional Testing
Из-за того, что driver не закрывается корректно, решила реализовать так:
@AfterMethod public void close(){ closeWebDriver(); }
Типа закрывать driver после каждого тестового метода. Не знаю, насколько верно. По идее, если Selenide все отслеживает, он это сделать должен был. Вот это я так и не поняла.
С такой реализацией все ок. Но боюсь, что это просто "костыли"(
#176541 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 16:21 в Selenium - Functional Testing
Не,не, я ошибся, да надо классы в параллели.
Афтерметод - не надо, оставьте афтер класс. Всё должно работать:
===== 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); } }
#176542 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 16:29 в Selenium - Functional Testing
Реализацию базового класса оставила, как Вы сказали, аннотации @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>
Пока заработало, так как надо. Сейчас гоняю в отладчике, ищу, что м б не так. Но вроде работает.
В любом случае, огромное спасибо Вам за помошь и реальные советы.
#176545 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 17:41 в Selenium - Functional Testing
Реализацию базового класса оставила, как Вы сказали, аннотации @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" и разбираюсь, что не так
#176550 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 14 мая 2020 - 19:24 в Selenium - Functional Testing
Ещё раз.
У меня заработало так - <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 =====
#176554 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 15 мая 2020 - 09:15 в Selenium - Functional Testing
Вы, наверно устали просто, и не замечаете что у вас открывается 2 окна браузера )) Вы сдвиньте одно окно, под ним будет ещё одно.
По логу всё корректно, всё отработало.
У вас сначала запустились в двух потоках TestClassOne и TwoTestClass, т.к. TwoTestClass имеет только 1 тест, он быстро отработал и закрылся, и запустился ThreeTestClass в другом потоке.
Добрый день!
Как бы я хотела, чтобы Вы были правы, но увы. Для теста добавила в каждый тестовый метод добавила Selenide.sleep(30000);
Чтобы тест выполнялся медленнее и можно было отловить открытие окон браузера. Вижу что 2 процесса запустилось, 1 окно открылось. Один тест выполняется в браузере, второй setup() ждет и выполняется только после того, как выполниться другой тест. На скрине видно.
#176559 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 15 мая 2020 - 12:36 в Selenium - Functional Testing
А пом ваш покажите?
Я так запускаю:
<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>
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>
Может другие настройки нужны, чтоб потоки в разных окнах браузера запускались?
#176563 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 15 мая 2020 - 13:09 в Selenium - Functional Testing
Ничего криминального не вижу.
Я в гифке всё показал, ищите разницу вашего кода с моим.
Я запускаю командой mvn test без всяких доп настроек. А у вас в Идее профиль какой-то сохранён на запуск теста, вот надо смотреть там настройки.
В общем, нашла из-за чего все стартовало в одном окне браузера. Вот она - эта "редиска", на скрине выделила. Сняла эту галку и все заработало, как положено - каждый класс стартует свой экземпляр драйвера, который управляет одним окном браузера, всего 3 окна.
#176564 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 15 мая 2020 - 13:10 в Selenium - Functional Testing
Спасибо Вам за помощь! Вопрос закрыт.
#176571 Параллельный запуск тестов Все стартует в одном окне браузера
Отправлено автор: OxanaKIseleva 16 мая 2020 - 09:26 в Selenium - Functional Testing
В итоге, в процессе многочисленных запусков проблема вернулась. Все тесты о5 стартуют в одном окне(. Причину устанавливаю
- Форум тестировщиков
- → Публикации OxanaKIseleva
- Политика Конфиденциальности
- Правила форума ·