运行UI SeleniumRC测试作为CI过程的一部分

时间:2009-10-16 06:55:15

标签: continuous-integration selenium selenium-rc

我正在尝试为QA部门设置CI环境。他们使用SeleniumRC在IE和FF浏览器中运行UI测试来测试一些Web应用程序。我成功将其配置为以here所述的Windows服务运行。但是,当我运行测试时,它会挂起。我可以在进程列表中看到由Selenium服务生成的iexplore.exe进程,但没有更多的事情发生。没有浏览器窗口,Windows事件日志中没有条目。我做了很多谷歌搜索,因为我明白问题是与桌面交互。我试图在SYSTEM帐户下运行“允许服务与桌面交互”复选框设置以及具有本地管理员权限的常规用户帐户。所以我的问题是它是否可能?

3 个答案:

答案 0 :(得分:4)

在我们的组织中,我们有一个运行构建的持续集成服务器(Cruise Control),包括Selenium RC测试。 CI服务器作为Windows服务运行(在MS Windows 2003 Server上),Selenium测试只是测试套件的一部分。

这是一个非常简单的设置,坦率地说,我认为没有理由放弃它。目前在我们的设置中,Selenium服务器(和客户端)直接从测试启动(但我们曾经将Selenium作为单独的服务)。

在Java代码中(实际上在所有Web测试的超类中),我们执行以下操作:

// to start the server
RemoteControlConfiguration config = new RemoteControlConfiguration();
config.set(...)  // set the serverHost and port
...
SeleniumServer server = new SeleniumServer(config);
server.start();

// and then to start the client
Selenium selenium = new DefaultSelenium(serverHost, port, "*firefox", "http://www.google.com");
selenium.start();
selenium.open("http://www.google.com");

// now the browser should be visible for you (if you run it locally, not as a service)

所以我建议您尝试以下内容(无论您使用何种语言):

  1. 尝试从一个独立的应用程序运行Selenium服务器和客户端。浏览器应显示为窗口。根据需要调整设置(浏览器类型等)。

  2. 尝试将代码合并到测试框架中(xUnit或其他)。手动运行它们。结果应该是相同的。

  3. 然后您可以尝试从持续集成运行测试。将CI服务器作为服务运行,并让它构建您的项目。浏览器不可见,但测试不是必需的,不是吗?

  4. 注意: 如果你想窥视Selenium在做什么,我相信在UNIX机器上会更容易。您可以指出测试使用您选择的X服务器DISPLAY - 假的或连接到某个监视器的真实服务器。

答案 1 :(得分:2)

我对作为一个应该与桌面应用程序交互的Windows服务运行任何东西持怀疑态度。 Windows服务在自己的沙箱中运行;他们不应该与用户的桌面或其应用程序进行交互。要做到这一点,需要特别努力与服务进行通信,所以如果可能的话,我认为会有某种桌面客户端运行,作为浏览器和Windows服务之间的联络人。

但是,我不能告诉你它不会起作用,因为如果人们在博客上发表文章显然是可能的。

顺便说一句,为什么它需要作为Windows服务运行?这是Selenium如何设置自动化,还是没有Windows服务?因为我认为那是两点之间的最短距离。

答案 2 :(得分:0)

我的建议是使用专用机器(或虚拟机)来运行Selenium RC。根据我的经验,最好让Selenium以交互方式而不是无头模式运行。