selenium Selify 4.x尝试发布CDP:“UnsupportedCommandException”

brccelvz  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(141)

我正在尝试通过CDP执行一些命令,然而,无论我使用哪种Selify/Driver/Chrome组合,结果总是相同的。
上一次测试的对象:

  • Selenie 4.1.1
  • Chrome+驱动程序96.0.4664.110

该项目是用C语言编写的,所以我通过cURL手动将其发布到Selify。除了CDP之外,其他所有命令都工作得很好。
我已经检查了SelSelum和Chrome驱动程序;它们都内置了CDP支持。
我试图发帖的URL是:

- /session/id/goog/cdp/execute
- /session/id/{}/cdp/execute

发布的数据格式为:“cmd”+“Params”(json对象)。
两者都以相同的结果结束:org.openqa.selenium.UnsupportedCommandException.
我还尝试了在不同的模式下运行Selify,独立模式、集线器/节点模式、相同的结果。
有没有人能告诉我我做错了什么?或者也许我误解了这个用法?

vm0i2vca

vm0i2vca1#

使用chromedrive可执行文件

这适用于我(Windows+Postman),但也应该适用于Curl Linux/Mac。

start chromedriver.exe

输出:

Starting ChromeDriver 97.0.4692.71 on port 9515...
  • 3向本地主机发送请求:9515/*
  • 3.1创建会话:
POST localhost:9515/session

request json body:
{"capabilities":{"goog:chromeOptions": {}}}

status 200

response:
 "value": {
        "capabilities": {
            ...
        },
        "sessionId": "b8ac49ce2203739fa0d32dfe8d1a23b5"
  • 3.2导航一些url(可选,只需根据会话ID检查请求即可):
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

使用Selify Grid运行CDP命令

最终,它开始对我起作用,

  • ChromeDriver 97.0.4692.71
  • Selify-SERVER-4.1.1
  • Chrome 97.0.4692.71(官方版本)(64位)

注意:对于Selify Grid HTTP请求,Content-Type标头应该具有charset=utf-8 Content-Type:application/json;charset=utf-8

前提条件

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...."
    }
}

相关问题