如何有条件地设置浏览器参数(特定于 Selenium-Jupiter)

How to set browser arguments conditionally (Selenium-Jupiter specific)

我已经尝试了很多方法来在 chrome-in-docker 浏览器中设置代理。

我终于找到了可行的方法,但这不是最佳解决方案。

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

这在我 运行 在 Jenkins 中进行测试时有效(那里需要代理),但在 运行 在本地进行测试时会失败。

有没有更好的方法设置代理服务器,或者有条件地设置?

我的代码 运行s 在 Java 中与 Maven。我可以向 Jenkins 添加系统 属性(-Dis.CI=true 或其他),但我只能弄清楚如何将这些参数设置为方法参数。这绝对不适用于有条件地设置它们。

非常感谢任何其他设置 --proxy-server 的方法。我也更喜欢一种在全球范围内设置它的方法。必须在每个测试中设置它 class 将是一场噩梦。

我试过使用 WebDriverManager.globalConfig().setProxy("...") 但没有效果。我假设配置中的代理不同于代理服务器。

我最终在 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");
    }
  }
}