具有代理身份验证的 BrowserMobProxy 似乎挂起/阻止 HTTP 请求

问题描述

我在 Selenium Java 程序中使用 browserMobProxy 来验证用于 Web 浏览的 HTTP 代理。当我访问一个网站时,例如“google.com”,浏览器加载页面就好了。但是,当我在第一个页面加载后放置调试断点(如下行所示)并在调试模式下运行程序时,通过自动浏览器 UI 进行的后续 HTTP 交互似乎挂起。

具体来说,在调试模式下,当程序在下面的断点处时,我然后手动在浏览器中输入其他 URL(yahoo.com)并按回车键,这导致浏览器永远加载。我瞥了一眼网络标签,状态一直是“待定”。

但是,如果我在第一个“google.com”页面加载后通过 webDriver.navigate(ANOTHER_SITE) 以编程方式访问另一个站点,这会正常工作。

这会阻止我执行基于 UI 的操作,例如在第一次成功访问页面后单击“登录按钮”,因为后续操作将挂起。

这是 Network Tab Screenshot

代码片段如下:

browserMobProxy browserMobProxyServer = new browserMobProxyServer();
browserMobProxyServer.setTrustAllServers(true);
browserMobProxyServer.setChainedProxy(new InetSocketAddress(PROXY_HOST,PROXY_PORT));
browserMobProxyServer
    .chainedProxyAuthorization(PROXY_USERNAME,PROXY_PASSWORD,AuthType.BASIC);
browserMobProxyServer.start(9091);

Proxy seleniumProxy = ClientUtil.createSeleniumProxy(browserMobProxyServer);
String hostIp = Inet4Address.getLocalHost().getHostAddress();
String proxyAddress = hostIp + ":" + browserMobProxyServer.getPort();
seleniumProxy.setHttpProxy(proxyAddress);
seleniumProxy.setSslProxy(proxyAddress);

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setProxy(seleniumProxy);
chromeOptions.setAcceptInsecureCerts(true);

System.setProperty("webdriver.chrome.driver","src/main/resources/chromedriver");
WebDriver webDriver = new ChromeDriver(chromeOptions);
webDriver.navigate("http://www.google.com");
System.out.println("STOP");  <----- PUT BREAKPOINT HERE

我是否以某种方式错误地设置了 browserMobProxy 或者我遗漏了什么?

出于诊断目的,我使用以下内容

<dependency>
  <groupId>net.lightbody.bmp</groupId>
  <artifactId>browsermob-core</artifactId>
  <version>2.1.5</version>
</dependency>
<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>4.0.0-alpha-4</version>
</dependency>

以及最新版本的 Chrome 和 Chrome 驱动程序。

感谢任何指导,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...