Chrome DevTools Protocol 端點
Google 提供一個可直接存取的
/cdp/execute
端點。每個 Selenium 繫結都提供一個方法,讓您可以將 CDP 網域傳遞為字串,並將所需參數傳遞為簡單的 Map。這些方法最終會被移除。建議使用 WebDriver-BiDi 或 WebDriver Bidi API 方法(如果可能),以確保未來的相容性。
用法
一般來說,您應該優先使用 CDP API,而不是這種方法,但有時語法會更簡潔或簡單許多。
限制包括
- 它僅適用於設定或取得資訊的用例;任何實際的非同步互動都需要其他實作
- 您必須知道網域和金鑰的正確「魔術字串」
- Chrome 的更新可能會變更所需的參數
範例
設定 Cookie
可以在 CDP API 設定 Cookie 找到替代實作
Map<String, Object> cookie = new HashMap<>();
cookie.put("name", "cheese");
cookie.put("value", "gouda");
cookie.put("domain", "www.selenium.dev");
cookie.put("secure", true);
((HasCdp) driver).executeCdpCommand("Network.setCookie", cookie);
cookie = {'name': 'cheese',
'value': 'gouda',
'domain': 'www.selenium.dev',
'secure': True}
driver.execute_cdp_cmd('Network.setCookie', cookie)
var cookie = new Dictionary<string, object>
{
{ "name", "cheese" },
{ "value", "gouda" },
{ "domain", "www.selenium.dev" },
{ "secure", true }
};
((ChromeDriver)driver).ExecuteCdpCommand("Network.setCookie", cookie);
應優先採用 CDP API 設定 Cookie 實作
cookie = {name: 'cheese',
value: 'gouda',
domain: 'www.selenium.dev',
secure: true}
driver.execute_cdp('Network.setCookie', **cookie)
效能指標
可以在 CDP API 效能指標 找到替代實作
應優先採用 CDP API 效能指標 實作
((HasCdp) driver).executeCdpCommand("Performance.enable", new HashMap<>());
Map<String, Object> response =
((HasCdp) driver).executeCdpCommand("Performance.getMetrics", new HashMap<>());
driver.execute_cdp_cmd('Performance.enable', {})
metric_list = driver.execute_cdp_cmd('Performance.getMetrics', {})["metrics"]
((ChromeDriver)driver).ExecuteCdpCommand("Performance.enable", emptyDictionary);
Dictionary<string, object> response = (Dictionary<string, object>)((ChromeDriver)driver)
.ExecuteCdpCommand("Performance.getMetrics", emptyDictionary);
應優先採用 CDP API 效能指標 實作
driver.execute_cdp('Performance.enable')
metric_list = driver.execute_cdp('Performance.getMetrics')['metrics']
基本驗證
可以在 CDP API 基本驗證 和 BiDi API 基本驗證 找到替代實作
應優先採用 BiDi API 基本驗證 實作
((HasCdp) driver).executeCdpCommand("Network.enable", new HashMap<>());
String encodedAuth = Base64.getEncoder().encodeToString("admin:admin".getBytes());
Map<String, Object> headers =
ImmutableMap.of("headers", ImmutableMap.of("authorization", "Basic " + encodedAuth));
((HasCdp) driver).executeCdpCommand("Network.setExtraHTTPHeaders", headers);
driver.execute_cdp_cmd("Network.enable", {})
credentials = base64.b64encode("admin:admin".encode()).decode()
headers = {'headers': {'authorization': 'Basic ' + credentials}}
driver.execute_cdp_cmd('Network.setExtraHTTPHeaders', headers)
((ChromeDriver)driver).ExecuteCdpCommand("Network.enable", emptyDictionary);
string encodedAuth = Convert.ToBase64String(Encoding.Default.GetBytes("admin:admin"));
var headers = new Dictionary<string, object>
{
{ "headers", new Dictionary<string, string> { { "authorization", "Basic " + encodedAuth } } }
};
((ChromeDriver)driver).ExecuteCdpCommand("Network.setExtraHTTPHeaders", headers);
應優先採用 BiDi API 基本驗證 實作
driver.execute_cdp('Network.enable')
credentials = Base64.strict_encode64('admin:admin')
headers = {authorization: "Basic #{credentials}"}
driver.execute_cdp('Network.setExtraHTTPHeaders', headers: headers)
最後修改日期:2023 年 11 月 17 日:升級到 Docsy 0 7 2 (#1529) (48f43616907)