Webdriver是否使用RPC调用。 webdriver如何控制浏览器?

时间:2016-06-08 18:45:20

标签: java selenium selenium-webdriver webdriver

我正在尝试了解Selenium Webdriver的架构。我正在经历这个: http://www.aosabook.org/en/selenium.html

“16.3.7。每个呼叫都是RPC呼叫”一节让我感到困惑。

据我所知,Webdriver会调用OS来控制浏览器。

有些正文可以解释一下“16.3.7。每次通话都是RPC通话”。 它说“通过其API进行的每次调用都是RPC调用”。

我对RPC调用的不确定性是它用于调用存在于另一个地址空间中的过程(通常在共享网络上的另一台计算机上)。但是对于Webdriver,我可以运行一个简单的webdriver脚本whitout连接到任何网络

Webdriver还使用REST api吗?

1 个答案:

答案 0 :(得分:0)

我会尽量保持长话短说,但(如果有人需要)可以在大卫伯恩斯的Selenium 2 Testing Tools中找到完整的描述。

WebDriver尝试从外部控制浏览器 浏览器。它使用辅助功能API来驱动浏览器。可访问性API由以下人员使用 许多用于访问和控制应用程序的应用程序 禁用用户并且是Web浏览器的常见用户。 WebDriver使用最合适的方式访问辅助功能API。如果我们看一下 Firefox,它使用JavaScript来访问API。如果我们看一下Internet Explorer,它就会使用C ++。这个 方法意味着我们可以以最佳方式控制浏览器但具有缺点 进入市场的新浏览器不会立即得到支持。

该系统由四个不同部分组成:

selenium sections

因此,在API代码进入SPI(无状态编程接口)之后,然后将其调用到a 通过使用唯一的ID,然后调用a来分解元素的机制 相关的命令。

  

Webdriver是否使用REST api?

从那里我们称之为JSON Wire协议。我们仍然使用HTTP作为主要传输 机制。我们与浏览器进行通信并具有简单的客户端服务器传输 能够将所有必要元素传输到控制它的代码的体系结构。它 使用REST之类的API作为沟通方式。

最后一部分是Selenium服务器或浏览器,根据处理内容,使用JSON Wire 用于分解JSON对象然后执行所需操作的命令。这一部分 代码取决于它运行的浏览器。如上所述,它可以通过C ++在浏览器中完成;如果它在IE中或如果不可用 我们注入Selenium。