是可能的:硒从Web应用程序传递脚本在运行时



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

我有一个web应用程序,用户可以用selenium命令创建脚本。例如,用户将编写以下内容并保存为文本文件:

script.OpenBrowser("Chrome");

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

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

,其中fileContent是前面提到的脚本。它被传递给一个我称为TestRunner的类,它将在运行时编译代码并运行脚本。我正在捕获有关运行的信息,以确定测试是否通过或失败,并将其存储在dB中以报告结果。

我在本地开发机器上的Visual Studio 2019中做所有这些。

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

异常被调用的目标抛出。修改后开始得到:

错误CS0009:元数据文件'D:xxxxxxxxxxxxxxxxxwwwrootdependencieschromedriver.exe'无法打开- PE映像不包含托管元数据。(1,163):错误CS7036:没有给出对应于'TestServices.TestServices(IWebHostEnvironment)'的所需形式参数'env'的参数

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

向远程WebDriver服务器请求URL http://localhost:53204/session的HTTP请求在60秒后超时。

我已经发布到Azure应用服务和一个VM运行IIS。后来的想法是它从VS2019运行在我的本地机器上。因此,请尝试在每个人都可以通过web访问的虚拟机上运行。

在此点之后一切都无法正常工作。简而言之,我试图从一个web应用程序中运行Selenium脚本,其中脚本是在运行时创建和运行的。

我所做的是可能做到的吗?我有搜索高和低,可以找到没有答案,如何做到这一点或如何通过错误。这可能吗?

我已经能够发布到我的本地IIS服务器,然后使用ngrok.exe我可以连接并使应用程序成功运行。然而,当我发布到azure vm运行IIS。我可以成功部署,并且应用程序可以运行。但当我试着运行一个脚本,它吹。

最新更新