是否可能:来自 Web App 的 Selenium 在运行时传递脚本

Is it Possible: Selenium from Web App passing scripts at runtime

我能够在本地完成这项工作,但是当我发布到 Azure 应用服务或 Azure VM 上的 IIS 运行ning 时,它失败了。这就是我正在做的。

我有一个 Web 应用程序,用户可以在其中使用 selenium 命令创建脚本。例如,用户将这样写一个另存为文本文件:

script.OpenBrowser("Chrome");

然后将其保存在网络服务器上的一个文件中。然后用户可以导航到该文件并按 运行 按钮。这将用以下内容包装脚本:

using System; 
using System.IO; 
using TeamStorm.Web.Services; 
namespace InMemoryApp
{ 
  class Program    
  {
    static void Main(string[] args) 
    { 
      TestServices script = new TestServices();  " + fileContent + "
    }
  }
}

其中 fileContent 是前面提到的脚本。它被传递给 class 我调用 TestRunner,它将在 运行 时间编译该代码和 运行 脚本。我正在捕获有关 运行 确定测试是通过还是失败的信息,并将其存储在 dB 中以报告结果。

我在 Visual Studio 2019 年在我的本地开发机器上完成了所有这些工作。

现在发布这个应用。一切正常,但实际 运行ning 测试。我收到以下错误:

调用的目标抛出了异常。进行更改然后开始获取:

error CS0009: Metadata file 'D:\xxxx\xxx\xxx\xxx\xxxx\wwwroot\dependencies\chromedriver.exe' could not be opened -- PE image doesn't contain managed metadata.(1,163): error CS7036: There is no argument given that corresponds to the required formal parameter 'env' of 'TestServices.TestServices(IWebHostEnvironment)'

开始将 IWebHostEnvironment 传递给方法并显示内部异常,然后开始获取:

The HTTP request to the remote WebDriver server for URL http://localhost:53204/session timed out after 60 seconds.

我已经发布到 Azure App Service 和 VM 运行ning IIS。后来的想法是在我的本地机器上从 VS2019 开始 运行s。因此,尝试 运行 在每个人都可以通过网络获得的 VM 上。

在这一点之后没有任何工作。 简而言之,我正在尝试从创建脚本的 Web 应用程序 运行 Selenium 脚本,并在 运行 时间 运行。

我正在做的事情是否可行?我到处搜索,找不到关于如何执行此操作或如何通过错误的答案。这可能吗?

我已经能够发布到我的本地 IIS 服务器,然后使用 ngrok.exe 我可以连接并成功安装应用程序 运行。但是,当我发布到 azure vm 运行ning IIS 时。我可以成功部署应用程序 运行s。但是当我尝试 运行 脚本时,它就崩溃了。