以编程方式启动.NET Core Web应用程序以进行Selenium测试

10

我目前正在尝试在一个核心Web应用程序上设置一些UI测试,但是我无法启动Web应用程序。 直接从Web应用程序目录使用命令行"dotnet run"可以工作。 问题出现在我尝试使用进程运行它以在执行测试之前运行时什么也不会发生。

    var process = new Process
    {
        StartInfo =
        {
            FileName = "dotnet",
            Arguments = "run",
            WorkingDirectory = applicationPath
        }
    };
    process.Start();

是否有人遇到过类似的问题,并且 / 或者成功解决了?我可能在错误地使用 Process

2个回答

8

添加UseShellExecute到我的StartInfo,并将其设置为false,结果让它工作了:

var process = new Process
{
    StartInfo =
    {
        FileName = "dotnet",
        Arguments = "run",
        UseShellExecute = false,
        WorkingDirectory = applicationPath
    }
};
process.Start();
UseShellExecute 的默认值为true,但这与运行 dotnet run 相似于运行 cmd dotnet run,而我需要的是后者。

在你启动它后,你能停止它吗? - Zack
我已经成功关闭了它,使用以下代码: 如果(_webprocess != null && _webprocess.HasExited == false) { _webprocess.CloseMainWindow(); _webprocess.Close(); } 调用Kill()方法无法生效。 - Zack
在我的情况下,它会在程序结束时停止。 - CodingNagger
如果 dotnet 已安装但未在 PATH 中,该怎么办? - baruchiro
安装后,它应该在PATH中。如果您正在终端或应用程序中工作,并且应该使用它,则需要重新启动它,以便它具有正确的PATH值。然后它应该可以正常工作。但是,如果它不在PATH中,则可以重新安装或手动添加。 - CodingNagger

0

试试这个

ProcessStartInfo Startinfo = new ProcessStartInfo();
Startinfo.FileName = "D:\\TFS\\QA\\SH_LoadTest\\SH_LoadTest\\bin\\Debug\\SH_LoadTest.exe";
StartInfo.Arguments = "Your Arguments";

Process pro = Process.Start(Startinfo);

你实际上可以使用Autoit来启动.NET Core应用程序。 - Neha
它给我的结果和之前一样:/ - CodingNagger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接