【发布时间】:2022-11-01 14:02:18
【问题描述】:
我正在尝试通过 CDP 执行一些命令,但是无论我使用 Selenium/Driver/Chrome 的哪种组合,结果总是相同的。
最后测试:
- 硒 4.1.1
- Chrome + 驱动程序 96.0.4664.110
该项目是用 C 语言制作的,所以我通过 CURL 手动发布到 Selenium。除了 CDP 之外的所有其他命令都可以正常工作。
我检查了 Selenium,Chrome 驱动程序;它们都内置了 CDP 支持。
我试图发布的 URL 是:
- /session/id/goog/cdp/execute
- /session/id/{}/cdp/execute
发布的数据格式为:“cmd”+“params”(json对象)。
两者都以相同的结果结束:org.openqa.selenium.UnsupportedCommandException.
我还尝试以不同的模式运行 Selenium,独立、集线器/节点,结果相同。
有人可以告诉我我做错了什么吗?还是我误解了用法?
【问题讨论】:
-
你用chromedriver吗?您可以为创建新会话的 curl 示例收费吗?
-
@MaxDaroshchanka 只需对 huburl/session 做一个简单的 POST,将 desiredCapabilities + requiredCapabilities 作为 JSON 对象。
-
@Mecanic 我尝试为 chromedriver 运行 CDP 命令,
POST /session/id/goog/cdp/execute对我有用。请参阅我的答案中的详细信息。 -
经过一番调查,我发现,使用本地 chromedriver 和 selenium-grid 是有区别的。我怀疑当您使用 selenium 网格创建会话时,您将获得带有
cdpurl 的se:options对象。 cdp 端点应该用于 cdp 命令。 -
对于 selenium-grid,我看到
ws://cdp url 返回,我认为这意味着 selenium-grid 不支持 cdp 命令端点,并且将 cdp 请求委托给客户端直接执行。您必须使用某些 ws 命令行工具而不是 curl 来发送和接收 ws 消息。所以,我认为使用 chromedriver 可执行文件是更简单的方法。
标签: selenium selenium-webdriver selenium-chromedriver selenium-grid