Selenium的Remote Control与WebDriver有什么区别?

时间:2010-10-24 10:11:09

标签: selenium webdriver hudson-plugins

我不确定我是否完全明白其中的区别。 WebDriver API还可以直接控制所选的浏览器。什么时候应该使用硒遥控器(硒RC)?

目前,我目前的情况是,我正在测试一个Web应用程序,方法是编写一个带有Selenium WebDriver API的套件,并让它在我的计算机上运行。测试需要更长时间才能完成,所以我一直在寻找在Linux服务器上运行测试的方法。

如果我使用Selenium Remote Control,这是否意味着我必须重写我用WebDriver API编写的所有内容?

我对Selenium Grid,Hudson,Selenium RC感到困惑。我为Hudson找到了一个Selenium Grid插件,但不确定它是否包含Selenium RC。

我采取了正确的路线吗?我设想了以下架构:

  • Hudson在少数Ubuntu专用服务器上运行。
  • Hudson与Xvnc& amp; Selenium Grid插件。 (我是否需要单独安装Firefox?)
  • 硒网格运行硒RC测试套件。

我认为这比使用WebDriver API在我当前工作的台式计算机上运行测试要快得多。

2 个答案:

答案 0 :(得分:14)

WebDriver现在是Selenium 2. Selenium和WebDriver代码库正在合并。 WebDriver解决了Selenium遇到的一些问题,Selenium解决了Webdriver所遇到的一些问题。

如果您已经在Selenium中编写了测试,则不必重写它们以与Selenium 2一起使用。我们是核心开发人员编写的,以便您创建一个浏览器实例并将其注入Selenium和Selenium 1个测试将在Selenium 2中运行。我在下面为您举了一个例子。

// You may use any WebDriver implementation. Firefox is used here as an example
WebDriver driver = new FirefoxDriver();

// A "base url", used by selenium to resolve relative URLs
String baseUrl = "http://www.google.com";

// Create the Selenium implementation
Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

// Perform actions with selenium
selenium.open("http://www.google.com");
selenium.type("name=q", "cheese");
selenium.click("name=btnG");

不幸的是,Selenium 2还没有进入Selenium 2,但是在它添加之前不应该太长,因为我们希望在接下来的几个月内达到测试版。

答案 1 :(得分:3)

据我了解,Webdriver实现的开始时间比Selenium RC晚。从我的角度来看,WebDriver是一个更灵活的解决方案,它解决了SeleniumRC的一些恼人的问题。

WebDriver提供用于测试Web GUI的标准界面。此接口有多种实现(HTTP,特定于浏览器并基于Selenium)。由于您已经有一些WebDriver测试,因此您必须熟悉基本文档,例如this

  

测试越来越长,所以我一直在寻找在linux服务器上运行测试的方法。

您是否试图找到实际的瓶颈?我不确定,消除WebDriver层会有所帮助。我认为,大部分时间花在Selenium命令发送和HTTP请求到被测系统上。

  

如果我使用sleneium遥控器,那么   这意味着我必须重写一切   我用WebDriver API写了吗?

一般来说,是的。如果你没有在测试代码和WebDriver之间实现一些额外的层。

对于Selenium Grid: 您可以在几个不同的[虚拟]节点上启动多个Selenium RC实例,然后在Selenium Grid中注册它们。您的测试连接到Selenium Grid,它将所有命令重定向到SeleniumRC实例,并根据所需的浏览器进行协调。

有关hudson插件的详细信息,您可以找到更多信息here