我正在嘗試通過 CDP 執行一些命令,但是無論我使用 Selenium/Driver/Chrome 的哪種組合,結果總是相同的。
最后測驗:
- 硒 4.1.1
- 鉻 驅動程式 96.0.4664.110
該專案是用 C 語言制作的,所以我通過 CURL 手動發布到 Selenium。除了 CDP 之外的所有其他命令都可以正常作業。
我檢查了 Selenium,Chrome 驅動程式;它們都內置了 CDP 支持。
我試圖發布的 URL 是:
- /session/id/goog/cdp/執行
- /session/id/{}/cdp/execute
發布的資料格式為:“cmd” “params”(json 物件)。
兩者都以相同的結果結束:org.openqa.selenium.UnsupportedCommandException。
我還嘗試以不同的模式運行 Selenium,獨立、集線器/節點,結果相同。
有人可以告訴我我做錯了什么嗎?還是我誤解了用法?
非常感謝
uj5u.com熱心網友回復:
使用 chromedriver 可執行檔案
這對我有用(Windows Postman),但也適用于 CURL Linux/Mac。
1 下載 chromedriver:https ://chromedriver.chromium.org/downloads為您的 chrome 版本。
2 啟動chromedriver
start chromedriver.exe
輸出:
Starting ChromeDriver 97.0.4692.71 on port 9515...
3 向 localhost:9515/ 發送請求
- 3.1 創建會話:
POST localhost:9515/session
request json body:
{"capabilities":{"goog:chromeOptions": {}}}
status 200
response:
"value": {
"capabilities": {
...
},
"sessionId": "b8ac49ce2203739fa0d32dfe8d1a23b5"
- 3.2導航一些url(可選,只需通過sessionId檢查請求即可):
POST localhost:9515/session/b8ac49ce2203739fa0d32dfe8d1a23b5/url
request json body:
{"url": "https://example.com"}
status 200
- 3.3 執行 CDP 命令(截圖):
POST localhost:9515/session/b8ac49ce2203739fa0d32dfe8d1a23b5/goog/cdp/execute
request json body:
{"cmd":"Page.captureScreenshot", "params":{}}
status 200
response:
{
"value": {
"data": "iVBORw0KGgoAAAANSUhEUgA...."
}
}
允許遠程連接
默認情況下,chromedriver 只允許本地連接。
要允許一些遠程 IP:
start chromedriver.exe --allowed-ips="some-remote-ip"
參考:https : //sites.google.com/a/chromium.org/chromedriver/security-considerations
使用 Selenium Grid 運行 CDP 命令
最終,它開始對我有用
- ChromeDriver 97.0.4692.71
- 硒服務器 4.1.1
- Chrome 97.0.4692.71(官方版本)(64 位)
注意:Content-Type:application/json;charset=utf-8對于 Selenium Grid HTTP 請求,Content-Type 標頭應該具有 charset=utf-8
。
先決條件
1 根據 https://www.selenium.dev/documentation/grid/getting_started/下載并運行selenium server
java -jar selenium-server-<version>.jar standalone --driver-configuration display-name='Chrome' stereotype='{"browserName":"chrome"}'
2 創建會話:
POST localhost:4444/wd/hub/session
request json body:
{
"desiredCapabilities": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [
],
"extensions": [
]
}
},
"capabilities": {
"firstMatch": [
{
"browserName": "chrome",
"goog:chromeOptions": {
"args": [
],
"extensions": [
]
}
}
]
}
}
status 200
response:
{
"status": 0,
"sessionId": "69ac1c82306f72c7aaf53cfbb28a30e7",
...
}
}
3 執行 CDP 命令(截圖):
POST localhost:4444/wd/hub/session/69ac1c82306f72c7aaf53cfbb28a30e7/goog/cdp/execute
request json body:
{"cmd":"Page.captureScreenshot", "params":{}}
status 200
response:
{
"value": {
"data": "iVBORw0KGgoAAAANSUhEUgA...."
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408357.html
標籤:
