了解Web驱动程序API

时间:2014-06-23 13:24:02

标签: node.js selenium webdriver

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

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

到目前为止,非常好。

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

我的问题是:为什么?

如果没有额外的Selenium服务器,是不是可以自动化浏览器?浏览器是否无法直接提供此API(如PhantomJS显然那样)?

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:5)

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

  

可以采用独立可执行文件的形式,通过HTTP协议转换JSON   到远程端使用的编码和传输机制。

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

此外,请务必注意,规范目前处于working draft阶段,尚未达到last call or candidate recommendation status。这意味着所有浏览器供应商可能尚未发布此规范的实现。虽然目前正在进行的实现由Mozilla for Firefox和最近发布的Internet Explorer from Microsoft实现,但这些实现都尚未完成,并且这两个实现特别需要外部可执行文件来访问HTTP,就像Chrome一样。

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