有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

设置代理和发送头selenium和java时出现问题

我在自动化测试中使用了selenium和java。我被迫在测试中发送授权令牌,所以我使用了BrowserMobProxy库。这是我在@BeforeClass中的设置:

BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.setTrustAllServers(true);
proxy.addHeader("Authorization",tokenIDdev2);
proxy.start();

接下来,我需要做的是通过特殊的代理地址打开浏览器,我发现这种设置代理地址的方式:

Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
DesiredCapabilities capabilities = new  DesiredCapabilities();
seleniumProxy.setHttpProxy(PROXY_ADDRESS);
seleniumProxy.setSslProxy(PROXY_ADDRESS);
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);

// Setting up Proxy for chrome
ChromeOptions opts = new ChromeOptions();
opts.merge(capabilities);
driver = new ChromeDriver(opts);

问题是,当我通过在上述方法中设置的代理进行连接时,请求并没有使用我在第一部分中指定的头发送

你是否认为我做错了,或者有其他方法来处理这种情况

谢谢


共 (1) 个答案

  1. # 1 楼答案

    出于某种原因,我想我也没能让.addHeader();方法起作用

    但我用另一种方式做到了:

        String authorizationKey = "Authorization";
        browserMobProxyServer.addRequestFilter((request, content, messageInfo)->{
            if (request.headers().contains(authorizationKey)) {
                request.headers().remove(authorizationKey);
            }
            request.headers().add(authorizationKey, tokenIDdev2);
            return null;
        });
    

    如果您100%确定“授权”头永远不存在,则可以删除if部分