SetUp браузера. Как сделать настройки браузера единожды, а не перед каждым тестом.

Всем привет. У меня есть TestBase, который @BeforeClass, в нем задаю настройки браузера и качаю хромдрайвер:


    @BeforeClass
    public void setUp() {
        WebDriverManager.chromedriver().driverVersion("85").setup();
        Configuration.browser = "chrome";
        Configuration.browserSize = "1024x768";
        Configuration.baseUrl = BaseHelper.getProperty("baseUrl");
        Configuration.headless = true;
        SelenideLogger.addListener("AllureSelenide", new AllureSelenide().screenshots(true).savePageSource(false));
    }

    @AfterClass
    public void tearDown() {
        closeWindow();
        closeWebDriver();
    }
}

От него наследуется каждый тест. Получается, что перед каждым тестом качается драйвер и делаются настройки браузера.
Но возникла необходимость прогонять все тесты не закрывая браузер.
Для этого мне надо скачивать драйвер и делать настройки браузера всего один раз перед всем прогоном, я для этого хочу все тесты вынести в один Suite, а TestBase теперь пометить @BeforeSuite. Но , наверное, некорректно делать setUp браузера и драйвера в контексте тестов? и необходимо вынести это куда-то подальше от тестов?
Подскажите, как вы решали такой вопрос?

Всё просто.

  1. Удалите свой метод tearDown (он не нужен, Селенид и так закроет браузер в конце).
  2. Метод setUp не опасен. Повторный вызов WebDriverManager.chromedriver().driverVersion("85").setup(); НЕ КАЧАЕТ вебдрайвер. Он умный, он понимает, что вебдрайвер уже скачан.
  3. И даже SelenideLogger.addListener можно делать повторно: он просто будет замещать предыдущий листенер.
2 лайка

Спасибо за ответ! Но допустим, что тестовых классов очень много, и получается, что перед каждым потратится время на проверку наличия драйвера. Интересно, насколько это может быть критичным

в итоге сделал так,драйвер не скачивается:

String os = System.getProperty("os.name").toLowerCase();
        if (os.contains("windows")) {
            System.setProperty("webdriver.chrome.driver", "src/main/resources/win/chromedriver.exe");
        } else if (os.contains("linux")) {
            System.setProperty("webdriver.chrome.driver", "src/main/resources/linux/chromedriver");
        }

Это абсолютно ненужная отпимизация.
Перед тем, как исправлять тормоза, вы сначала убедитесь, что тормоза существуют. :slight_smile:
Сколько бы тестов ни было, это очень быстро работает. Не нужно оптимизировать.

1 лайк

Спасибо большое!)