捕获请求/网络流量

时间:2021-07-15 11:43:17

标签: java selenium selenium-webdriver selenium-chromedriver

我想捕获 javascript 发出的请求。

我尝试使用 net.lightbody.bmp -> browsermob-core -> 2.1.5,但在我将其导入 maven 后,chromedriver 不再启动并且出现错误。

这是我拥有的代码:

System.setProperty("webdriver.chrome.driver", "data/chromedriver-91.0.4472.19.exe");

WebDriver driver = new ChromeDriver(); //the error appears here when browsermob is imported

try{

    driver.get("https://testpages.herokuapp.com/styled/sync/xhttp-messages.html");
    Thread.sleep(5 * 1000);

}catch(Exception e){
    e.printStackTrace();
}finally{
    driver.quit();
}

无需导入 browsermob 即可运行。

导入后,出现此错误:

Exception in thread "main" java.lang.NoSuchMethodError: 
com.google.common.collect.ImmutableList.toImmutableList()Ljava/util/stream/Collector;

at org.openqa.selenium.chrome.ChromeOptions.asMap(ChromeOptions.java:292)
at org.openqa.selenium.remote.NewSessionPayload.create(NewSessionPayload.java:94)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:68)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at com.test.core.Test.main(Test.java:27)

我该如何解决这个错误?或者我如何捕获 javascript 发出的请求?

1 个答案:

答案 0 :(得分:1)

BrowserMob 代理使用旧版本的番石榴库。看起来 browsermob 依赖项中定义的 guava 更接近于 Selenium 依赖项中的依赖项树中的根。

要解决这个问题,您可以将新的 guava 版本依赖项添加到您的 root pom.xml。最新一期是:

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1.1-jre</version>
</dependency>