我现在正在使用Selenium来控制Chrome。我对Selenium协议和关于WebDrivers的W3c标准感到困惑。
问题:Selenium的协议和Webdriver标准之间的关系是什么? Web浏览器是否内置于浏览器中?
我知道浏览器会公开webdriver interface。这基本上是一堆网址。
更具体地说(尽管它们是相同问题)的不同方面:
我半理解Selenium有自己的协议,类似于" W3规格说的是什么。我无法找到有关差异的信息。这些是什么?它们会聚合吗?
为什么Selenium需要Chromedriver? (尤其是Chromedriver浏览器)它是否只能直接连接到Chrome实例?
Selenium提供服务器,然后将请求转发到远程浏览器。我的理解是,无头客户端与服务器通信,该服务器运行无头Chrome并向无头客户端报告答案。这只是一个纯粹的代理"? selenium服务器是否使用W3 API?
如果我在W3规范周围写了一个薄层(也就是说,只是一个makeNow的脚本...... 按照W3协议调用),如何直接与浏览器通信?我无法在任何地方找到关于如何做到这一点的明确指示
再次使用我的薄层:如果我想控制远程浏览器,我是否只需要将这些调用代理到运行无头镀铬的服务器?
我想这个问题归结为:
更新1 :我刚刚意识到ChromeDriver可执行文件实际上是由Google自己发布的。它不是Selenium!所以,我想我可以运行ChromeDriver命令并连接到它......
答案 0 :(得分:2)
我半理解Selenium有自己的协议,类似于" W3规格说的是什么。我无法找到有关差异的信息。这些是什么?它们是否趋同?
没有一个不同的协议......它是一个不同的东西。 this document explains it all。它归结为Selenium发布了Selenium JSON Wire Protocol' (他们是在2004年到2009年之间开发的......一生以前!)长话短说:
Selenium 2发布一段时间后,浏览器厂商开始自己实施Selenium JSON Wire Protocol!好极了!这很有意义:它们处于维护服务器端的最佳位置,并且可以直接在浏览器中构建必要的行为。 它始于2009-2011的OperaDriver,然后是其他人,例如ChromeDriver和Mozilla的geckodriver与Marionette。这就是WebDriver标准的动机来源。
该链接也包含其余内容。
为什么Selenium需要Chromedriver? (尤其是Chromedriver浏览器)它是否只能直接连接到Chrome实例?
ChromeDriver是接受HTTP调用以打开浏览器窗口并模拟用户交互的软件。为了保持实用性,Chromedriver将实施例如:
POST /session New Session
DELETE /session/{session id} Delete Session
GET /status Status
GET /ses has the has thesion/{session id}/timeouts Get Timeouts
POST /session/{session id}/timeouts Set Timeouts
POST /session/{session id}/url Navigate To
GET /session/{session id}/url Get Current URL
电话很简单,而且没有那么多。
Selenium提供了一个服务器,然后将请求转发到远程浏览器。我的理解是,无头客户端与服务器通信,该服务器运行无头Chrome并向无头客户端报告答案。这只是一个纯粹的代理"? selenium服务器是否使用W3 API?
是的,你(好吧,我,那是)是对的:它只是作为代理。但它也可以很酷!例如,您可以连接到远程WebDriver,并说“我希望在此系统上使用此浏览器&#34 ;; webdriver将有一个特定驱动程序列表,并将尝试在符合您要求的浏览器上运行该命令。
如果我围绕W3规范写了一个薄层(也就是说,只是一个按照W3协议进行调用的脚本),我该如何直接与浏览器对话?我无法在任何地方找到关于如何做到这一点的明确指示
您无法直接与浏览器对话 - 您可以与ChromeDriver交谈,然后ChromeDriver会为您进行交谈:D
再次使用我的薄层:如果我想控制远程浏览器,我是否只需要将这些调用代理到运行无头镀铬的服务器?
Webdriver客户端不需要知道它是否与45个无头浏览器和3个不同操作系统的代理进行通信。无论如何协议都是一样的。
如果我想彻底摆脱Selenium,并且只是赤裸裸地使用这些规格,我能做到吗?如果是这样,怎么样?我会错过什么"上吗
欢迎您实施图书馆并跳过 selenium webdriver 库。 The specs are available并准备好使用。但!请记住,只有Firefox可以完全实现规范,今天,Chrome's webdriver status is pretty poor,尽管这种情况很快就会发生变化。