我想捕获 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 发出的请求?
答案 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>