我试图等待一个元素,表明一个页面仍在加载,并存在于页面上多次,不可见(想想表与加载数据占位符)。
Playwright文档建议使用Locators是最佳实践,因此我最初尝试通过执行以下操作来实现这一点:
locator.waitFor({state: "hidden")
然而,由于定位器是严格的,并且只允许匹配一个元素而导致的错误。
我现在用下面的代码来做:
page.waitForSelector(".foo .bar", {state: "hidden"})
这是不理想的,有几个原因:
- 我将页面元素作为定位器存储在页面对象模型中,您似乎无法访问定位器的选择器,这意味着选择器在代码中是重复的
- 我相信page.waitForSelector会使用一个不推荐的ElementHandle
有什么方法可以关闭Locator的严格性约束吗?或者使用Locator来实现这一点。我知道你可以在Locator上执行.count
,它匹配多个元素,但是我还没有找到一个好的方法来将它与等待计数为0结合起来。
3条答案
按热度按时间ercv8c1e1#
我希望它会工作,这段代码将检查下一个元素每次前一个消失
8ulbf1ek2#
最后我使用
evaluateAll
方法实现了这个功能。示例代码:llycmphe3#
使用toHaveCount()(添加于:v1.20)
超时:为了避免无限循环,可以全局配置超时,或者将其作为函数调用中的参数传递。
参考:https://github.com/microsoft/playwright/issues/11988
我怎么能Assert一个元素不在剧作家的页面上?