Для запуска тестов, используя библиотеки selenide и selenoid вместе, вам потребуется выполнить следующие шаги:
1. Установите Selenide и Selenoid в ваш проект. Вы можете сделать это, добавив соответствующие зависимости в ваш файл pom.xml (если вы используете Maven) или другим способом, подходящим для вашей среды разработки.
2. Настройте Selenoid, указав необходимые параметры для окружения тестирования. Обычно это делается через файл конфигурации `browsers.json`, который содержит информацию о различных браузерах и их настройках.
3. Создайте класс тестового лисенера, который будет инициализировать и управлять запуском и остановкой сессий Selenoid. Пример такого лисенера вы можете найти в следующем ответе.
4. Внесите необходимые изменения в ваши тесты, чтобы они использовали Selenide и выполнялись в контейнере Selenoid. Для этого вы можете использовать метод `open()` класса `com.codeborne.selenide.Selenide`, указав URL, который должен быть открыт перед выполнением тестов.
Пример кода для открытия URL с использованием Selenide:
```java
import com.codeborne.selenide.Selenide;
...
@BeforeClass
public static void setUp() {
Selenide.open("http://example.com");
}
```
Теперь, чтобы исправить ошибку "session not created: Chrome failed to start: exited normally. (session not created: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed)", связанную с кастомным лисенером SelenoidSetup, вам нужно убедиться, что ваш лисенер правильно настроен и работает с Selenide и Selenoid.
Вот пример настройки лисенера SelenoidSetup:
```java
import com.codeborne.selenide.Configuration;
import org.testng.IInvokedMethod;
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;
import ru.yandex.qatools.allure.annotations.Step;
import java.io.IOException;
public class SelenoidSetup implements IInvokedMethodListener {
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
String browserName = "";
if (method.isTestMethod()) {
try {
browserName = method
.getTestMethod()
.getConstructorOrMethod()
.getMethod()
.getAnnotation(Test.class)
.browserName();
} catch (NullPointerException e) {
// Если browserName не указан, будет выбран браузер по умолчанию
browserName = System.getProperty("browserName", "chrome");
}
Configuration.browser = browserName;
}
}
@Override
public void afterInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
stopWebDriver();
}
@Step("Stopping web driver")
public void stopWebDriver() {
try {
Runtime.getRuntime().exec("killall chromedriver");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
Этот лисенер устанавливает имя браузера в конфигурации Selenide перед запуском каждого тестового метода и управляет остановкой драйвера после выполнения каждого тестового метода.
Для использования этого лисенера добавьте аннотацию `@Listeners` к вашему классу тестов, как показано ниже:
```java
import org.testng.annotations.Listeners;
@Listeners(SelenoidSetup.class)
public class YourTestClass {
// ваш код тестов
}
```
Теперь ваш тест должен быть запущен с использованием Selenide и Selenoid, и ошибка, связанная с DevToolsActive