TeamCity成功运行bat文件但没有运行selenium测试

时间:2015-12-31 09:14:55

标签: .net batch-file selenium teamcity specflow

我遇到了 TeamCity 的问题,该问题运行了我为运行 SpecFlow 测试而创建的批处理文件。

批处理文件运行SpecRun.exe,我应该看到 Chrome 弹出,测试开始运行。 (这不是本地应用程序,因此不需要运行IIS等。)测试是针对站点运行的selenium测试。从命令行运行批处理文件时,所有工作都按预期工作。

我在 TeamCity 中有一个构建步骤,它通过命令行构建步骤运行批处理文件。但是当我运行构建步骤时,我在日志中得到Success,它告诉我批处理文件已经运行,但没有弹出 Chrome 窗口,也没有实际运行测试。< / p>

我的批处理文件内容是:

cd C:\Users\carlb\Documents\Visual Studio 2015\Projects\SITS_Automation\packages\SpecRun.Runner.1.2.0\tools
start SpecRun.exe run ../../SITS_Automation/default.srprofile /report:../../SITS_Automation/TestResults/SITS_Report.html

我的批处理代码中的错误导致硒测试没有完成?

2 个答案:

答案 0 :(得分:1)

start命令启动SpecRun和另一个进程中的任何其他程序,因此不会等待它的completition。 删除开始或向其添加/ WAIT参数。

答案 1 :(得分:0)

设置当前目录的路径包含空格。

因此你需要

cd "C:\Users\carlb\Documents\Visual Studio 2015\Projects\SITS_Automation\packages\SpecRun.Runner.1.2.0\tools"

甚至更好

cd /D "%USERPROFILE%\Documents\Visual Studio 2015\Projects\SITS_Automation\packages\SpecRun.Runner.1.2.0\tools"

可以通过在命令提示符窗口中运行cmd /?来读取最后一页输出,其中包含空格或以下字符&()[]{}^=;!'+,`~之一的字符串必须包含在双引号。

使用选项/D命令 CD 进程也切换到与当前驱动器不同的驱动器上的目录。预定义环境变量USERPROFILE包含当前用户的配置文件目录的路径。

如果start是一个控制台应用程序,则删除命令SpecRun,以便在同一命令进程中运行此应用程序,暂停执行批处理文件,直到此控制台应用程序自行终止。

但如果SpecRun是GUI应用程序,请使用

start "SpecRun" /wait SpecRun.exe run ..\..\SITS_Automation\default.srprofile /report:..\..\SITS_Automation\TestResults\SITS_Report.html
双引号中的

"SpecRun"只是一个窗口 title 字符串,对于空字符串也可以只是"",或者在此命令行中完全省略,因为没有其他参数用双引号括起来。如果 start 行中的任何字符串都用双引号括起来,则可选 title 通常是必需参数,因为命令 start 会将第一个双引号字符串解释为标题字符串。因此,如果只是一个空字符串,则指定使用 start 始终是标题字符串更安全,以避免意外行为。

您还应该在目录或文件的路径中使用\而不是/,因为反斜杠是Windows上的目录分隔符,而不是Unix / Linux / Mac上的正斜杠。命令处理器cmd.exe在执行批处理文件时用文件和目录路径中的反斜杠替换正斜杠。但是,最好为Windows指定具有正确目录分隔符的文件和文件夹路径,但启动的应用程序需要正斜杠,因为(非常)从* nix移植到Windows。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • cd /?
  • start /?