我至少有三个选项可以单击按钮:
\nawait page.Locator("button", new() { HasText = "\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c" }).ClickAsync();await page.GetByRole(AriaRole.Button, new() { Name = "\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c" }).ClickAsync();await page.GetByText("\xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c") .ClickAsync();根据我的实际观察,我执行此操作的页面可以在 HTML 标记中为此按钮提供 2 个选项:
\n#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#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同时,从开发者控制台document.querySelector将在两个 HTML 变体的两个路径中找到该按钮。但从剧作家的角度来看,他们有时有效,有时无效。同时,执行继续进一步执行命令,就好像进行了单击一样,尽管实际上并没有发生(我使用参数观察了浏览器的行为headless=false)。
另外,Force = true …
我正在尝试使用 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
我的 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) 我需要通过基于 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);查询来做到这一点?我需要使用单个查询来完成此操作,因为我创建的代码需要是通用的,而不是假设事物并进行“手动”过滤。一切都需要在选择器中。