是否可能: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 Web 驱动程序可以访问 javascript 全局变量吗?