无法安装 playwright:找不到使用 Playwright 的项目。确保项目或解决方案存在于

Posted

技术标签:

【中文标题】无法安装 playwright:找不到使用 Playwright 的项目。确保项目或解决方案存在于【英文标题】:Cannot install playwright: Couldn't find project using Playwright. Ensure a project or a solution exists in 【发布时间】:2021-12-25 14:58:53 【问题描述】:

我正在尝试在我的部署目标机器上安装 playwright 以运行 UI 测试。

# Install the CLI once.
dotnet tool install --global Microsoft.Playwright.CLI

playwright install

但是当使用 playwright CLI 包括 playwright install 时,我得到:

找不到使用 Playwright 的项目。确保项目或解决方案 存在于 C:\users\myuser 中,或者使用 -p 提供另一个路径。

如何在虚拟机上安装 playwright?

编辑:

不幸的是,用于剧作家的 .NET nuget 包设计得不是很好。虽然 API 很棒,但部署却是一场噩梦。

不仅您无法在部署服务器上使用 CLI 安装浏览器,而且该软件包会为您的项目以及所有引用它的项目添加 3x NodeJS 运行时 (200MB)。

阻止这些文件被发布是很重要的,并且您的构建工件可以轻松地增长到每个构建的 1GB!

您无法配置 NodeJS 或剧作家本身的路径。

您可以在此处投票支持解决此问题: https://github.com/microsoft/playwright-dotnet/issues/1850

【问题讨论】:

【参考方案1】:

需要在csproj所在的文件夹中执行playwright install或者使用-p指定工程文件

# Create project
dotnet new console -n PlaywrightDemo
cd PlaywrightDemo

# Install dependencies, build project and download necessary browsers.
dotnet add package Microsoft.Playwright
dotnet build
playwright install

查看文档了解更多详情:https://playwright.dev/dotnet/docs/intro#first-project

您也可以使用以下代码从代码安装浏览器:

using Microsoft.Playwright;

var exitCode = Microsoft.Playwright.Program.Main(new[]  "install" );

更多详情:https://www.meziantou.net/distributing-applications-that-depend-on-microsoft-playwright.htm

【讨论】:

但这对部署虚拟机没有任何意义。只有编译的二进制文件,没有项目。我不是在创建剧作家项目,我想执行它。见playwright.dev/dotnet/docs/cli#install-browsers Playwright CLI 只是Microsoft.Playwright.dll 调用Microsoft.Playwright.Program.Run 的助手。此 dll 位于 NuGet 包 Microsoft.Playwright 中。此方法调用位于.playwright 文件夹中的exe。在构建项目时,此文件夹会复制到 build 文件夹中。这就是为什么在调用playwright install 之前需要一个项目文件并构建项目的原因。或者,您可以从代码安装浏览器。我已经用一个例子更新了答案。

以上是关于无法安装 playwright:找不到使用 Playwright 的项目。确保项目或解决方案存在于的主要内容,如果未能解决你的问题,请参考以下文章

SpecFlow 测试无法使用 Playwright.NET 运行

Playwright JS - 如果找不到元素/选择器,如何全局定义/更改超时?

如何使用 PlayWright (python) 下载嵌入式 PDF?

AttributeError:找不到 PyAudio;检查安装...无法使用语音识别

BZOJ1113 海报PLA

python+playwright 学习-8.如何在控制台调试定位(Inspect selectors)