标签: playwright-sharp

如何使用 Playwright 获取下拉菜单的选定选项

我正在使用 Playwright 的 C# 语言绑定。

HTML 示例:

<select id="txtType" name="Type" class="form-control">
        <option>Blog Posts</option>
        <option>Books</option>
        <option>Presentations</option>
        <option>Videos</option>
        <option>Podcasts</option>
        <option>Examples</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我知道我可以用来Page.SelectOptionAsync设置下拉列表的选定选项,但如何获取当前选定的选项?

当我查看 DropDown 的所有属性时,我看不出ElementHandles.

c# webautomation playwright playwright-sharp

9
推荐指数
3
解决办法
2万
查看次数

Playwright 等待页面完全加载且 XHR / Ajax 调用完成

我之前在 Node.js 中使用过 Puppeteer,现在在 .Net 中使用 Microsoft.Playwright

我需要等待所有 XHR / Ajax 请求完成,以便页面处于真正的“就绪”状态。使用超时和延迟是不可靠的。

对于 Puppeteer,我使用了一个 Pending XHR Puppeteer 库https://www.npmjs.com/package/pending-xhr-puppeteer,它是专门针对这个问题设计的

所以在node.js中我会在warapper中加载页面等,然后在需要时我会调用

await pageWrapper.waitForAllXhrFinished()
Run Code Online (Sandbox Code Playgroud)

我假设它在幕后记录发送的 ajax 请求的数量,并在它们全部返回后返回该函数。

注意:对于我的场景之一,设置了 2 个 XHR 请求,它们来自完全相同的 URL。

我们如何在 Playwright for .Net 中实现这一目标?

playwright-sharp

8
推荐指数
1
解决办法
6688
查看次数

无法在 docker 镜像内运行 PlayWright

我正在尝试使用 playwright 创建 .net 5.0 docker 映像。\n这是我的 DockerFile:

\n
FROM mcr.microsoft.com/dotnet/runtime:5.0-buster-slim AS base\nWORKDIR /app\n\nFROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build\nWORKDIR /src\nCOPY ["Agent.csproj", "Agent/"]\nRUN dotnet restore "Agent/Agent.csproj"\nCOPY . "/src/Agent"\nWORKDIR "/src/Agent"\nRUN apt-get update -yq && apt-get upgrade -yq && apt-get install -yq curl git nano\nRUN curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get install -yq nodejs build-essential\nRUN npm install -g npm\n\nRUN dotnet add package Microsoft.Playwright\nRUN dotnet build "Agent.csproj" -c Release -o /app/build\nRUN npx playwright install\n
Run Code Online (Sandbox Code Playgroud)\n

但是一旦我在图像命令中运行dotnet run Agent就会出现以下错误:

\n
Executable doesn't exist …
Run Code Online (Sandbox Code Playgroud)

.net docker dockerfile playwright playwright-sharp

5
推荐指数
1
解决办法
8056
查看次数

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

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

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

playwright install
Run Code Online (Sandbox Code Playgroud)

然而,当使用 playwright CLI 包括 playwright 安装时,我得到:

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

如何在虚拟机上安装 playwright?

编辑:

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

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

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

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

您可以在这里投票修复此问题: https ://github.com/microsoft/playwright-dotnet/issues/1850

.net dotnet-tool playwright playwright-sharp .net-6.0

5
推荐指数
1
解决办法
8949
查看次数

剧作家“元素未附加到 DOM”

我正在尝试使用 Playwright (.NET) 抓取一个网站。该网站看起来像是在 2000 年代初编写的(以怪异模式等运行),而我遇到了一个我似乎无法找到解决方案的问题。

我的目标是选中一个复选框。我可以input使用选择元素

var input = await page.QuerySelectorAsync("inputSelector")
Run Code Online (Sandbox Code Playgroud)

该元素已成功选择,但在尝试运行时await input.CheckAsync(),出现错误Element is not attached to the DOM。我没有注意到会导致这种情况的元素有任何异常。为什么会发生此错误?

更新

await page.ClickAsync("inputSelector")我通过运行来检查该框来使其工作。这适用于我的目的,但它不能解释为什么如果以其他方式完成它会出错,所以我仍然想知道为什么会发生该错误。

c# webautomation playwright playwright-sharp playwright-dotnet

4
推荐指数
1
解决办法
7775
查看次数