gpt4 book ai didi

java - 当通过 selenium 中的 browsermob 代理运行时,Har 文件总是返回空

转载 作者:行者123 更新时间:2023-12-02 02:11:46 28 4
gpt4 key购买 nike

我试图通过 browsermob 代理读取 selenium 重放期间遍历的页面源,但我总是得到一个空的 har 文件。

Selenium 3.141browsermob-core 2.1.5 jar

下面是我的代码。

如果我设置

WebDriver 驱动程序 = new ChromeDriver(options);页面已加载

WebDriver 驱动程序 = new ChromeDriver(功能);页面无法加载并且返回页面未加载

代理已根据日志正确启动

/************************************/

[RemoteTestNG] 检测到 TestNG 版本 6.14.3

SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。

SLF4J:默认为无操作 (NOP) 记录器实现

SLF4J:参见http://www.slf4j.org/codes.html#StaticLoggerBinder了解更多详情。

net.lightbody.bmp.BrowserMobProxyServer@61322f9dBrowserMobProxy59858是端口号

代理(手动,http=10.88.16.64:59858,ssl=10.88.16.64:59858)seleniumProxy

/************************************/

任何建议都会有帮助。

public void test() throws Exception 
{

BrowserMobProxy proxy = getProxyServer(); //getting browsermob proxy
System.out.println(proxy+"BrowserMobProxy");
Proxy seleniumProxy = getSeleniumProxy(proxy);
System.out.println(seleniumProxy+"seleniumProxy");
DesiredCapabilities capabilities = new DesiredCapabilities().chrome();


capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
System.setProperty("webdriver.chrome.driver", "C:\\APMWS\\testmvnproject\\src\\drivers\\chromedriver76.exe");
ChromeOptions options = new ChromeOptions();
WebDriver driver = new ChromeDriver(options);

proxy.newHar(); // creating new HAR
driver.get("https://google.com");
driver.navigate().to("https://pizzahut.com"); //example

List<HarEntry> entries = proxy.getHar().getLog().getEntries();
for (HarEntry entry : entries)
{
HarRequest request = entry.getRequest();
HarResponse response = entry.getResponse();
System.out.println(request.getUrl()+" : "+response.getStatus()+","+entry.getTime()+"ms");
}
proxy.stop();
driver.close();
}

public Proxy getSeleniumProxy(BrowserMobProxy proxyServer)
{
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
System.out.println(seleniumProxy.getHttpProxy());
try
{
String hostIp = Inet4Address.getLocalHost().getHostAddress();
System.out.println(hostIp);
seleniumProxy.setHttpProxy(hostIp + ":" + proxyServer.getPort());
seleniumProxy.setSslProxy(hostIp + ":" + proxyServer.getPort());
System.out.println(proxyServer.getPort()+"is port number");
}
catch (UnknownHostException e)
{
e.printStackTrace();
System.out.println("invalid host");
}
return seleniumProxy;
}

public BrowserMobProxy getProxyServer()
{
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.setTrustAllServers(true);
proxy.start(0);
return proxy;
}

预期结果:将通过代理运行的跟踪写入 HAR 文件

实际结果:代理已设置,页面已启动,但 HAR 文件为空。

最佳答案

您可以删除以下内容:SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。

如果您正在运行 Maven,只需将其放入您的 POM 文件中。

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>

这就是我在 Chrome 中启动 Har 文件的方式。

  // start the proxy
proxy = new BrowserMobProxyServer();
proxy.start(0);
// get the Selenium proxy object
org.openqa.selenium.Proxy seleniumProxy =
ClientUtil.createSeleniumProxy(proxy);
ChromeOptions options = new ChromeOptions();
options.setCapability(CapabilityType.PROXY, seleniumProxy);
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);

关于java - 当通过 selenium 中的 browsermob 代理运行时,Har 文件总是返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57325006/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com