了解Web驱动程序API

如果我在WebDriver API上理解了W3C的信息,那么实现这个API的浏览器就可以通过使用RESTful API来实现自动化。 也就是说,我可以打开HTTP连接到浏览器,并使用REST向其发送命令。

我也发现这个Gist确认我的猜测是正确的:Node.js脚本直接连接到一个已经作为WebDriver服务器启动的PhantomJS。

到现在为止还挺好。

我现在不明白为什么显然,对于任何其他浏览器,我仍然需要一个selenium​​服务器。 即使像webdriverjs这样的项目也要求我运行一个Selenium服务器。

我的问题是:为什么?

不应该有一个额外的Selenium服务器自动化浏览器? 如果浏览器不能直接提供这个API(就像PhantomJS显然那样)?

任何人都可以点亮一下吗?

您误解了W3C规范。 虽然规范的第2.6节声明实现者必须提供一个JSON-over-HTTP可访问的协议“远端”,它还声明了这个实现:

可以采用独立的可执行文件的forms,将JSON over HTTP协议转换为远程端使用的编码和传输机制。

所以,简单地说,不,可能不是简单地启动浏览器实例并希望通过HTTP连接到它。 虽然PhantomJS确实将WebDriver实现作为浏览器可执行文件的一部分,但您可能需要一个单独的可执行文件来执行此function。 例如,自动化Chrome需要一个单独的chromedriver可执行文件的实例,该可执行文件实现协议的HTTP服务器部分。

此外,重要的是要注意,该规范目前处于working draft阶段,尚未达到last callcandidate recommendation状态 。 这意味着所有的浏览器供应商可能还没有发布这个规范的实现。 虽然Mozilla for Firefox目前正在进行实施,而最近发布的一个针对Microsoft的Internet Explorer ,但这两个实现都没有完成,特别是这两个实现都需要通过HTTP访问的外部可执行文件,只是像Chrome一样。

因此,目前,使用Selenium服务器是目前不提供HTTP实现的浏览器的唯一select。 目前来自主要桌面浏览器厂商的列表包括Firefox,Internet Explorer和Safari。