gpt4 book ai didi

node.js - 了解 Web 驱动程序 API

转载 作者:太空宇宙 更新时间:2023-11-03 22:47:26 24 4
gpt4 key购买 nike

如果我了解 W3C 关于 WebDriver API 的信息是的,实现此 API 的浏览器可以通过使用 RESTful API 实现自动化。也就是说,我可以打开与浏览器的 HTTP 连接并使用 REST 向其发送命令。

我还发现了this Gist这证实了我的猜测是正确的:Node.js 脚本直接连接到已作为 WebDriver 服务器启动的 PhantomJS。

到目前为止,一切顺利。

我现在不明白的是为什么显然对于任何其他浏览器我仍然需要 Selenium 服务器。甚至像 webdriverjs 这样的项目要求我运行 Selenium 服务器。

我的问题只是:为什么?

难道不应该可以在没有额外 Selenium 服务器的情况下实现浏览器自动化吗?浏览器是否应该无法直接提供此 API(PhantomJS 显然就是这样做的)?

有人可以解释一下吗?

最佳答案

您误解了 W3C 规范。虽然section 2.6该规范声明实现者必须提供协议(protocol)的 JSON-over-HTTP 可访问“远程端”,它还声明实现:

MAY take the form of a standalone executable that translates the JSON over HTTP protocol to the encoding and transport mechanism used by the remote end.

所以,简单地说,不,您可能不会简单地启动浏览器实例并期望通过 HTTP 连接到它。虽然 PhantomJS 确实将其 WebDriver 实现作为浏览器可执行文件的一部分包含在内,但您可能需要单独的可执行文件来实现此功能。例如,自动化 Chrome 需要一个单独的 chromedriver executable 的实例。 ,它实现了协议(protocol)的 HTTP 服务器部分。

此外,值得注意的是,该规范目前处于工作草案阶段,尚未达到 last call or candidate recommendation status 。这意味着所有浏览器供应商可能尚未发布此规范的实现。目前 Mozilla for Firefox 正在进行实现。 ,以及最近发布的 Internet Explorer from Microsoft ,这两个实现都尚未完成,并且这两个实现都特别需要外部可执行文件才能通过 HTTP 访问,就像 Chrome 一样。

因此,目前,对于当前不提供 HTTP 实现的浏览器来说,使用 Selenium 服务器是唯一的选择。目前主要桌面浏览器供应商的列表包括 Firefox、Internet Explorer 和 Safari。

关于node.js - 了解 Web 驱动程序 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24367117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com