XZe*_*Zen 9 java selenium google-chrome-devtools selenium-chromedriver selenium4
我正在尝试使用 selenium 开发工具 java API,对于多种 API 方法,我得到了java.util.concurrent.TimeoutException.
例如,我正在尝试使用Network.clearBrowserCache,它应该可以根据 chromedriver 文档工作:https ://chromedevtools.github.io/devtools-protocol/tot/Network/
我正在clearBrowserCache使用以下代码调用:
chromeDriver.getDevTools().send(Network.clearBrowserCache())
它失败了,但同时如果我使用其他类似这样的 devTools 命令:
chromeDriver.getDevTools().send(Browser.getVersion())
它正确返回数据。
打电话createSession之前先打电话试试clearBrowserCache。
使用您的设置,这有效:
chromeDriver.getDevTools().createSession();
chromeDriver.getDevTools().send(Network.clearBrowserCache())
Run Code Online (Sandbox Code Playgroud)
这会产生java.util.concurrent.TimeoutException:
chromeDriver.getDevTools().send(Network.clearBrowserCache())
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码段验证浏览器缓存是否已清除:
ChromeDriver driver = new ChromeDriver();
driver.get("https://refreshyourcache.com/en/cache-test/");
Thread.sleep(2000);
driver.getDevTools().createSession();
driver.getDevTools().send(Network.clearBrowserCache());
driver.get("https://refreshyourcache.com/en/cache-test/");
Thread.sleep(5000);
Run Code Online (Sandbox Code Playgroud)
如果您注释掉该行,driver.getDevTools().send(Network.clearBrowserCache());则会得到不同的结果:

效果很好
public void testCdt {
final ChromeLauncher launcher = new ChromeLauncher();
final ChromeService chromeService = launcher.launch(false);
final ChromeTab tab = chromeService.createTab();
final ChromeDevToolsService devToolsService = chromeService.createDevToolsService(tab);
final Page page = devToolsService.getPage();
Network network = devToolsService.getNetwork();
// Clear browser cached
network.clearBrowserCache();
// Log requests with onRequestWillBeSent event handler.
network.onRequestWillBeSent(
event ->
System.out.printf(
"request: %s %s%s",
event.getRequest().getMethod(),
event.getRequest().getUrl(),
System.lineSeparator()));
network.onLoadingFinished(
event -> {
chromeService.closeTab(tab);
launcher.close();
});
network.enable();
page.navigate("http://github.com");
devToolsService.waitUntilClosed();
}
Run Code Online (Sandbox Code Playgroud)