标签: playwright-dotnet

剧作家按钮点击效果不可预测

我至少有三个选项可以单击按钮:

\n
    \n
  1. await page.Locator("button", new() { HasText = "\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c" }).ClickAsync();
  2. \n
  3. await page.GetByRole(AriaRole.Button, new() { Name = "\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c" }).ClickAsync();
  4. \n
  5. await page.GetByText("\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c") .ClickAsync();
  6. \n
\n

根据我的实际观察,我执行此操作的页面可以在 HTML 标记中为此按钮提供 2 个选项:

\n
    \n
  1. 选择器:#app-content > div > div > div._1hAP9 > div > div.f\\\\+e\\\\+A > button\nxpath:/html/body/div[1]/div[1]/div[2]/div/div/div[4]/div/div[2]/button
  2. \n
  3. 选择器:#app-content > div > div > div._1hAP9 > div > div > button\nxpath:/html/body/div[1]/div[1]/div[2]/div/div/div[7]/div/div/button
  4. \n
\n

同时,从开发者控制台document.querySelector将在两个 HTML 变体的两个路径中找到该按钮。但从剧作家的角度来看,他们有时有效,有时无效。同时,执行继续进一步执行命令,就好像进行了单击一样,尽管实际上并没有发生(我使用参数观察了浏览器的行为headless=false)。

\n

另外,Force = true …

asp.net playwright playwright-dotnet

5
推荐指数
0
解决办法
1122
查看次数

剧作家“元素未附加到 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
查看次数

访问 Playwright 中的同级元素

我的 DIV 中有两个兄弟跨度。我正在 Blazor 中进行 E2E 测试,我想访问第二个 Span 内容 ( @Status)。

<div>
     <span> Status:</span>
     <span> @Status</span>
 </div>
Run Code Online (Sandbox Code Playgroud)

我找到了一个解决方案,如果它是根据此链接的JavaScript 。

const text = await page.locator(':text(" Status:") + span').textContent();
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何对 C# 语法执行相同的操作。我可以访问第一个跨度,但不能访问下一个跨度。

var firstSpan = Page.Locator("text= Status :");
Run Code Online (Sandbox Code Playgroud)

c# e2e-testing blazor playwright playwright-dotnet

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

Playwright - 根据 CSS 属性选择元素

我需要通过基于 CSS 属性的过滤来使用 Playwright 选择适当的元素。在我的特定情况下,我需要过滤掉具有该属性的元素text-decoration:line-through并关注其余的元素。

这是包含元素的 DOM:

<span>
    <span style="line-height:1.15 !important;display:initial;text-decoration:line-through;display:block;">0.42</span>
    <span style="line-height:1.15 !important;display:initial;font-weight:bold;">0.29</span>
</span>
Run Code Online (Sandbox Code Playgroud)

(糟糕的 HTML 代码,我知道……对此我无能为力……)

在这种情况下,我需要选择 2nd span,它缺少删除线样式,但span无法预期元素的顺序和数量。

有没有办法通过单个ilocator.Locator(selector);查询来做到这一点?我需要使用单个查询来完成此操作,因为我创建的代码需要是通用的,而不是假设事物并进行“手动”过滤。一切都需要在选择器中。

css playwright playwright-dotnet

3
推荐指数
1
解决办法
2433
查看次数