是的,你看得没错。
根据 Selenium v4.0.0-alpha-3 的发布说明:
* Expose devtools APIs from chromium derived drivers.
* Expose presence of devtools support on a role-based interface
根据 Selenium v4.0.0.0-alpha-1 的发行说明:
* Basic support for CDP landed via the "DevTools" interface.
所以
Chrome DevTools协议已经准备好与
Selenium4一起使用,这将允许工具对Chromium、Chrome和其他基于Blink的浏览器进行仪器化、检查、调试和分析。在
使用Selenium Webdriver控制Chrome Devtools的讨论中,@AdiOhana提到了以下来自
Profiler Domain的几个命令的示例用法:
driver.getDevTools().createSession();
driver.getDevTools().send(new Command("Profiler.enable", ImmutableMap.of()));
driver.getDevTools().send(new Command("Profiler.start", ImmutableMap.of()));
driver.getDevTools().addListener(new Event("Profiler.consoleProfileStarted", ConsoleProfileStarted.class), new Consumer<Object>() {
@Override
public void accept(Object o) {
}
});
注意:在 Selenium Java 客户端添加 Profiler 领域之前,您必须提供您的 Mapper。
获取域名
获取域名 将使客户端能够用客户端代码替换浏览器的网络层。
Fetch域的方法如下:
- Fetch.disable:禁用fetch域。
- Fetch.enable:启用请求暂停事件。请求将暂停,直到客户端调用failRequest、fulfillRequest或continueRequest/continueWithAuth之一。
- Fetch.failRequest:导致请求失败,并指定原因。
- Fetch.fulfillRequest:提供请求的响应。
- Fetch.continueRequest:继续请求,可选择修改其某些参数。
- Fetch.continueWithAuth:在authRequired事件后继续请求并提供authChallengeResponse。
- Fetch.getResponseBody:从服务器接收响应体并作为单个字符串返回。仅适用于暂停在响应阶段的请求,与takeResponseBodyForInterceptionAsStream互斥。在接收到响应体之前调用影响请求的其他方法或禁用fetch域会导致未定义的行为。
- Fetch.takeResponseBodyAsStream:返回表示响应体的流的句柄。请求必须在HeadersReceived阶段暂停。请注意,在此命令之后,请求无法继续--客户端需要取消它或提供响应体。该流仅支持顺序读取,如果指定了位置,则IO.read将失败。此方法与getResponseBody互斥。在接收到响应体之前调用影响请求的其他方法或禁用fetch域会导致未定义的行为。
Fetch域的事件如下:
- Fetch.requestPaused:当启用域并且请求URL与指定的过滤器匹配时发出。请求将暂停,直到客户端使用continueRequest、failRequest或fulfillRequest之一做出响应。可以通过存在responseErrorReason和responseStatusCode字段来确定请求的阶段--如果这些字段中的任何一个存在,则请求处于响应阶段,否则处于请求阶段。
- Fetch.authRequired:当启用域并且handleAuthRequests设置为true时发出。请求将暂停,直到客户端使用continueWithAuth做出响应。
参考文献
您可以在以下讨论中找到一些相关内容: