【问题标题】:Programmatically start a .NET Core web app for Selenium testing以编程方式启动 .NET Core Web 应用程序以进行 Selenium 测试
【发布时间】:2017-05-23 12:06:23
【问题描述】:

我目前正在尝试在 Core Web 应用程序上设置一些 UI 测试,但是我无法启动 Web 应用程序。从 Web 应用程序目录直接使用命令行和“dotnet run”是可行的。当我在执行测试之前尝试使用 Process 运行它时,问题就来了。

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

之前有没有人遇到过和/或设法解决过类似的问题?我可能误用了Process

【问题讨论】:

    标签: c# selenium selenium-webdriver .net-core


    【解决方案1】:

    UseShellExecute 添加到我的 StartInfo 并将其设置为 false 使其工作:

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

    UseShellExecute 的默认值为 true,但它类似于运行 cmd dotnet run 而不是我需要的 dotnet run

    【讨论】:

    • 启动后,你能阻止它吗?
    • 纳米。我使用以下命令关闭它 if (_webprocess != null && _webprocess.HasExited == false) { _webprocess.CloseMainWindow(); _webprocess.Close(); } 调用 Kill() 不起作用。
    • 在我的情况下,它会在程序结束时停止
    • 如果 dotnet 已安装但不在 PATH 中怎么办?
    • 安装后,它应该在 PATH 中。如果您在应该使用它的终端或应用程序中工作,您需要重新启动它,以便它具有正确的 PATH 值。然后它应该工作。但是,如果它不在 PATH 中,那么您可以重新安装或手动添加它。
    【解决方案2】:

    试试这个

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

    【讨论】:

    • 其实可以使用Autoit来启动.net core应用
    • 它给了我和以前一样的结果:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2020-12-12
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2011-01-23
    • 2016-12-14
    相关资源
    最近更新 更多