从Fitnesse启动seleniumRC

时间:2020-03-06 14:24:59  来源:igfitidea点击:

我正在尝试在夜间在TFS上集成MSBuild上正在运行的Fitnesse测试。

为了使它自成一体,我只想在健身需要时才启动seleniumRC服务器。

我已经看到有一个"命令行夹具",但是它是用Java编写的,我可以使用吗?

解决方案

如何编写一个简单的.NET应用程序,该应用程序执行由构建脚本运行的Process.Start(" selenumRC commandline")?

如果我们距离Selenium路线不太远,我是否建议我们使用类似的.NET浏览器自动化工具;特别是WatiN或者ArtOfTest。这些中的"堆栈"完全是.NET,因此使它们在不同的计算机上运行要容易得多。

我想你也许可以。我们可以使用该任务在MSBuild中轻松调用任何进程。但是,这样做的问题是exec任务将等待Selinium进程完成后再继续,这不是我们想要的行为。我们想运行该过程,使其在构建期间保持运行,然后在构建完成时将其拆除。

因此,我认为我们可能需要创建一个自定义MSBuild任务来执行此操作。请参阅以下帖子,以获取某人创建的任务示例,该任务将异步运行以将控制权返回到构建脚本:

http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx

还有一个从MSBuild调用Java程序(但在这种情况下是同步的)的示例,请看一下我从MSBuild调用Ant的任务。

http://teamprise.com/products/build/

作为MSBuild任务的一部分,我们将需要将创建的进程ID输出到输出属性,以便在生成脚本的末尾可以调用另一个自定义MSBuild任务来终止该进程。它可以通过在MSBuild中查找作为变量传递的进程ID并调用Process.Kill方法来实现。

Process process = Process.GetProcessById(ProcessId);
process.Kill();

就是说,我们需要通过确保在生成错误路径等过程中将其包含在杀伤任务中来,确保它始终在MSBuild中执行。我们可以使selenium RC启动程序任务寻找其他seleniumRC进程,并在启动新进程之前将其杀死,这样,如果某个进程由于某种原因未能正确关闭,则可能会使事情更具弹性。下一个版本。

无论如何,我的回答听起来很费劲,所以希望其他人会想出一种更简单的方法。我们可能能够在FitNesse测试启动的测试套件中创建seleniumRC进程,并在套件关闭时将其杀死,或者我们可能能够编写自定义任务来扩展FitNesse运行程序任务并在之前异步启动seleiniumRC运行测试过程,然后将其终止。

祝你好运,

马丁

感谢答复!

到目前为止,这就是我所做的。

我制作了一个fit夹具(非常简单),使用提供的命令行(在我的情况下为startSelenium.bat)启动进程。固定装置返回ProcessID,因此我可以将其存储在我的适应性上下文中,并在以后关闭该会话。

现在,我可以在我的fitnesse测试中制作一个如下所示的SuiteSetUp页面。

| RunCommandFixture |

|命令行| RunCommand?|

| C:\ Projects ... \ startSeleniumRC.bat | >> seleniumprocess |

和这样的SuiteTearDown

| RunCommandFixture |