2016-10-27 114 views
2

我需要你的帮助来连接与硒有关的东西。 现在在过去的几周里,我一直在阅读关于Selenium文档。 有硒IDE(记录和重播测试的Firefox扩展) 硒RC - (硒1.0)。这似乎已被弃用,并使用代理HTTP服务器在多个浏览器上运行测试。 Selenium Web Driver - (selenium 2.0)。这是最新的一个,现在应该用于自动化测试。 (每个浏览器都实现了Web驱动程序API) 我还了解到,Web驱动程序与自动浏览器支持交互,不需要HTTP服务器。Selenium WebDriver和Selenium服务器

然后就是这个Selenium服务器。 (用java编写的硒独立服务器) 与selenium服务器的交互是通过JSON有线协议。 (其中每个语言绑定呼叫硒服务器传递JSON数据通过HTTP)

现在我有以下问题:

  1. 是否Selenium服务器相同硒 RC使用的代理服务器?

  2. 硒RC是否使用JSON线协议。

  3. 如果web驱动程序 与本地浏览器对自动化的支持相互作用,selenium服务器在哪里适合Selenium 2.0。

  4. 假设我正在使用selenium 2.0,java客户端 库在铬浏览器中运行我的测试。当我打电话给WebDriver API时, 如何与chrome驱动程序交互?它使用JSON线协议吗?

... 我有更多的问题,而是需要上述的人的答案清除硒云在我的头上。

回答

1

1- Selenium Server 2.0与Selenium RC兼容。从1.0到2.0版本的版本主要是因为他们将WebDriver API添加到服务器。所以,Selenium Server 2.0包括Selenium RC。

几个月前,他们从Selenium Server中删除了Selenium RC API,这是再次撞击版本号的主要因素,这次是3.0。

注意:您仍然可以在Selenium 3中使用RC API(使用与Selenium Server .jar不同的传统模块),但由于RC API是使用WebDriver而不是Selenium Core实现的,一些测试可能会有不同的表现。

2-不,JSON Wire Protocol是WebDriver协议,类似于WebDriver接口或API。 W3C文档here。 JSON有线协议可以看作是在客户端/服务器通信环境中表示的方式,在We​​bDriver API绑定中定义的commands(例如,转至特定的URL,单击某个元素,...)。

3- Selenium Server是一个“WebDriver服务器”。您的测试脚本可以使用JSON有线协议与它进行通信并发送“WebDriver命令”。根据测试脚本所需的功能(例如您的测试脚本要使用哪个浏览器),然后Selenium Server以这种或那种方式“转发/执行”这些命令。

如果您指定您需要HtmlUnit无头浏览器,那么Selenium Server不会将这些命令转发给任何其他进程,而是使用与Selenium Server捆绑在一起的HtmlUnitDriver执行它们。

如果您指定您需要Chrome浏览器,那么Selenium Server会将这些命令“转发”到ChromeDriver(在Chrome的情况下,WebDriver驱动程序是完全独立的“WebDriver Server”进程)。

我以这种方式,Selenium服务器是有用的集中在一个点上,在测试脚本之外,处理几个浏览器的所有必要负担。您可以将其配置为处理多个浏览器。

除了您可以让Selenium Server的行为像grid一样,并且只与一个端点(即集线器)交谈,它将负责将测试分发到所有注册的节点。

4-是的,部分已经解释。只需添加一下,如果需要,您可以直接从测试脚本连接到ChromeDriver。