Как установить аргументы браузера условно (зависит от Selenium-Jupiter)

Я пробовал много всего, чтобы настроить прокси в браузере Chrome-in-Docker.

Я наконец нашел то, что работает, но это не лучшее решение.

@BeforeEach
public void beforeEach(@Arguments("--proxy-server=server:portNum") WebDriver driver) {
    this.registrationPage = new RegistrationPage(driver);
    this.registrationPage.navigateTo();
}

Это работает, когда я запускаю тесты в Jenkins (там нужен прокси), но при локальном запуске тесты не проходят.

Есть ли лучший способ установить прокси-сервер или установить его условно?

Мой код работает на Java с maven. Я бы согласился добавить системное свойство в Jenkins (-Dis.CI=true или что-то еще), но я могу только выяснить, как установить эти аргументы в качестве параметра метода. Это определенно не сработает для их условной установки.

Мы приветствуем любой другой способ установки --proxy-server. Я бы также предпочел установить это глобально. Установка его в каждом тестовом классе была бы кошмаром.

Я пробовал использовать WebDriverManager.globalConfig(). SetProxy("..."), но это не дало результата. Я предполагаю, что прокси в конфиге отличается от прокси-сервера.

1 ответ

Решение

В итоге я установил это явно в ChromeOptions. Это не идеально, но это лучшее решение, которое я мог найти. Я все же хотел бы найти более общее решение, которое будет работать во всех браузерах.

Я также создал системное свойство is.CI, которое я установил при запуске в Jenkins. Это необходимо, потому что прокси не работает локально.

@ExtendWith(SeleniumExtension.class)
public class BaseTest {
@Options
static ChromeOptions options = new ChromeOptions();

@BeforeAll
public static void beforeAll() {
    Boolean isCI = Boolean.getBoolean("is.CI");

    if (isCI) {
        options.addArguments("--proxy-server=server:portNum");
    }
  }
}
Другие вопросы по тегам