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

Posted

技术标签:

【中文标题】是否可能:Web App 中的 Selenium 在运行时传递脚本【英文标题】:Is it Possible: Selenium from Web App passing scripts at runtime 【发布时间】:2021-11-21 08:08:09 【问题描述】:

我可以在本地完成这项工作,但是当我发布到 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:\xxxx\xxx\xxx\xxx\xxxx\wwwroot\dependencies\chromedriver.exe' 无法打开 -- PE 映像不包含托管元数据。(1,163): 错误CS7036:没有给出与“TestServices.TestServices(IWebHostEnvironment)”的所需形式参数“env”相对应的参数

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

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

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

此时没有任何效果。 简而言之,我正在尝试从一个 Web 应用程序运行 Selenium 脚本,其中脚本是在运行时创建和运行的。

我正在做的事情可能吗?我进行了高低搜索,但找不到有关如何执行此操作或如何通过错误的答案。这可能吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于是否可能:Web App 中的 Selenium 在运行时传递脚本的主要内容,如果未能解决你的问题,请参考以下文章

我们是否需要同时拥有Selenium服务器和Selenium WebDriver?

《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)

selenium 操作cookie (cookie测试)

Selenium Web 驱动程序可以访问 javascript 全局变量吗?

如何使用java中的selenium Web驱动程序中的分页搜索表中的元素

Selenium 中的 Ajax 弹出窗口