20

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

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

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

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

我走的是正确的路线吗?我设想以下架构:

  • Hudson 在少数 Ubuntu 专用服务器上运行。
  • Hudson 使用 Xvnc 和 Selenium Grid 插件运行。(我需要单独安装 Firefox 吗?)
  • 运行 selenium RC 测试套件的 Selenium 网格。

我认为这比在我当前使用 WebDriver API 的台式计算机上运行测试更省时。

4

2 回答 2

14

WebDriver 现在是 Selenium 2。Selenium 和 WebDriver 代码库正在合并。WebDriver 克服了 Selenium 的许多问题,而 Selenium 克服了 Webdriver 的许多问题。

如果您在 Selenium 1 中编写了测试,则不必重写它们以使用 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,但它应该不会太长,因为我们希望在接下来的几个月内达到测试版。

于 2010-10-24T11:43:00.740 回答
3

据我了解,Webdriver 的实现比 Selenium RC 晚一点。在我看来,WebDriver 是更灵活的解决方案,它解决了 SeleniumRC 的一些恼人问题。

WebDriver 为测试 Web GUI 提供标准接口。此接口有多种实现(HTTP、特定于浏览器和基于 Selenium)。由于您已经进行了一些 WebDriver 测试,因此您必须熟悉这样的基本文档

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

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

如果我使用 sleneium 远程控制,这是否意味着我必须重写我用 WebDriver API 编写的所有内容?

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

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

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

于 2010-10-24T10:55:14.657 回答