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

Как запустить тесты в одном браузере?


(Anton) #1

Всем привет!

Возник вопрос, не могу решить. Примечание: "Я только учусть, не судите строго".

Есть 100 тестов написаных на Java (ну как написаных, сконвертированых из Selenium IDE).

Фреймворк: Java + TestNG + Selenium WebDriver + Maven

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

Как сделать, чтобы они запускались по очереди в одном браузере?

 


(Taras) #2

почитайте про анотации AfterClass , BeforeClass

видимо у Вас всегда стартует новий webdriver

а Вам нужно стартануть его всего лишь один раз перед всем suite-ом (@BeforeSuite)

и потом и убить в конце suite-а (@AfterSuite)

 


(Anton) #3

Спасибо за помощь.

Я в анотации @BeforeSuite не обявил глобальную переменную :)

public class TestBase {

protected static WebDriver driver;
protected static String baseUrl;
 
Из за одного слова столько проблем :) Теперь работает все отлично.

(nigilit) #4

Каким образом запускаете тесты все вместе.

Если используете Suite то уберите параметр parallel из xml:

<suite name="My suite" parallel="methods" thread-count="5">


(Taras) #5

вот и хорошо, что разобрались)


(Sergey Korol) #6

Статический драйвер свяжет вам руки при попытках масштабирования.


(Taras) #7

кстати да, сделайте instance webdrier-a отдельно - аля singleton


(Diana) #8

я сделала то же самое, поменяла на Before/After Suite и сделала глобальной переменную для driver, запускаю из Eclipse правой кнопкой на пакете

иногда тесты не стартуют совсем и ошибка f.QueryInterface is not a function

иногда первый тест выполняется, но после выполнения первого теста, дальше идет попытка зайти на сайт ww.мойсайтNULL.com и, соответственно, падает


public class CommonClass {

protected static WebDriver driver;
private String baseUrl;

@BeforeSuite
public void setUp() throws Exception {
    driver = new FirefoxDriver();
    baseUrl = "http://url.com/";
  }

@AfterSuite
public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

#9

(Sergey Korol) #10

Запуская тесты в одном браузере, рискуете:

  • стать заложником кеша / куков;
  • писать многоэтажные прекондишены / посткондишены, дабы вернуть
    систему в исходное состояние;
  • невольно сделать все свои тесты зависимыми друг от друга;
  • начать изобретать велосипеды для решения проблем с внеплановым
    падением тестов и влиянием на п.2.

П.С. Если открытие браузера грузит систему, то пора задуматься над запросом на увеличение ресурсов.