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

KJW*_*KJW 20 selenium webdriver hudson-plugins

我不确定我是否完全明白其中的区别.WebDriver API还可以直接控制所选的浏览器.什么时候应该使用硒遥控器(selenium 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和Selenium Grid插件运行.(我需要单独安装Firefox吗?)
  • Selenium网格运行硒RC测试套件.

我认为这比使用WebDriver API在我当前工作的台式计算机上运行测试更有时间效率.

Aut*_*ter 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");
Run Code Online (Sandbox Code Playgroud)

不幸的是,Selenium 2还没有进入Selenium 2,但由于我们希望在接下来的几个月内达到测试版,所以它不应该太长.

  • +1 ..这有助于我修复我的代码.从IDE切换到WebDriver是最烦人的事情.Selenium的文档非常糟糕.我不得不在异常后找出异常.您是否碰巧知道任何有助于转换的文档?我已经了解了用户扩展部分.现在我想弄清楚为什么定位器不起作用(如LinkText或XPath).看起来像IDE中的格式转换并不能很好地工作. (2认同)

Kel*_*Kel 3

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

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

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

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

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

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

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

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