0

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

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

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

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

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

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

非常感谢任何其他设置 --proxy-server 的方法。我还希望有一种全局设置的方法。必须在每个测试类中设置它将是一场噩梦。

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

4

1 回答 1

1

我最终在 ChromeOptions 中明确设置了这个。这并不理想,但它是我能找到的最佳解决方案。我仍然想找到一个适用于所有浏览器的更通用的解决方案。

我还创建了我在 Jenkins 中运行时设置的 is.CI 系统属性。这是必要的,因为代理不能在本地工作。

@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");
    }
  }
}
于 2020-01-03T18:37:31.020 回答