【发布时间】:2022-02-01 01:18:53
【问题描述】:
我正在尝试等待指示页面仍在加载并且多次存在于页面上的元素不可见(想想带有加载数据占位符的表格)。
Playwright 文档建议使用定位器是最佳实践,因此我最初尝试通过以下方式实现:
locator.waitFor({state: "hidden")
但是由于定位器是严格的并且只允许匹配一个元素而导致的错误。
我现在正在使用以下代码:
page.waitForSelector(".foo .bar", {state: "hidden"})
由于以下几个原因,这并不理想:
- 我将页面元素作为定位器存储在页面对象模型中,您似乎无法访问定位器的选择器,这意味着选择器在代码中重复
- 我相信 page.waitForSelector 会使用不鼓励使用的 ElementHandle
有什么方法可以关闭定位器的严格约束?或使用定位器实现此目的的方法。我知道您可以在匹配多个元素的 Locator 上执行 .count,但我还没有找到一种将其与等待计数为 0 相结合的好方法。
【问题讨论】:
-
那么使用playwright.dev/docs/locators#lists 并等待每个定位器上的可见状态对您不起作用?
-
@madflow 啊,不,我在文档中看了一眼,不明白这是做什么的!我现在有一个可行的解决方案(循环获取所有元素的隐藏状态并等待它们全部为真,或者超时)。
标签: node.js playwright