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

TeamCity running bat file sucessfully but did not run the selenium tests

我在使用 TeamCity 时遇到问题,运行 是我为 运行 我的 SpecFlow[ 创建的批处理文件=29=] 测试。

批处理文件 运行s SpecRun.exe 我应该看到 Chrome 弹出并且测试开始 运行。 (这不是本地应用程序,因此无需获取 IIS 运行ning 等)测试是针对站点的 运行 硒测试。当从命令行 运行ning 批处理文件时,一切都按预期工作。

我在 TeamCity 中有一个构建步骤,即 运行 通过命令行构建步骤生成批处理文件。但是当我 运行 构建步骤时,我在日志中得到 Success,它告诉我批处理文件有 运行,但没有 Chrome window 弹出也没有测试实际上是 运行.

我的批处理文件内容是:

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

我的批处理代码中可能有什么错误导致 selenium 测试未完成?

启动命令启动 SpecRun 和另一个进程中的任何其他程序,因此不会等待它完成。 去掉start或者给它加上/WAIT参数。

设置当前目录的路径包含 space.

因此你需要

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"

可以在命令提示符 window 中 运行ning cmd /? 的最后一页输出中读取带有 space[= 的字符串57=] 或以下字符之一 &()[]{}^=;!'+,`~ 必须用双引号引起来。

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

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

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

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

"SpecRun" 只是一个 window title 字符串,对于空字符串也可以只是 "" 或完全保留out 在此命令行上,因为没有其他参数用双引号引起来。如果 start 行上的任何字符串用双引号引起来,则可选 title 通常是必需参数,因为命令 start 通常将第一个双引号字符串解释为标题字符串。因此,更安全的做法是指定 start 的用法始终是标题字符串(如果这只是一个空字符串,以避免意外行为)。

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

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

  • cd /?
  • start /?