Как установить аргументы браузера условно (зависит от 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");
}
}
}