尝试使用 toBeVisible() 断言来断言多个元素时遇到一些问题

Having some trouble trying to assert multiple elements with toBeVisible() assertion

我注意到 toBeVisible() 在调试模式下 运行 测试时检测到多个元素时失败。我还注意到 toBeVisible 在检测到断言中的多个元素时没有括号通过。

我想知道当检测到多个元素时,是否有方法让 toBeVisible() 带有括号传递,因为我需要为这种特定情况传递下面的超时参数,因为我等待的元素是一个渲染上传文档的页面可能需要 2 秒到 2 分钟才能显示

由于定位器附加到多个页面,以下行失败

await expect(locator).toBeVisible({ timeout: 10000 })

我目前所做的是更改配置文件中全局期望超时的值,因此

await expect(locator).toBeVisible;

有效,但我想知道是否有办法避免在全局范围内设置如此高的超时,而只使用文档中设置的方式,但对于具有多个元素的情况。

要声明多个元素,您可以这样做:

await expect(locator).toHaveCount(42);

要使定位器更具体,您可以将其缩减为:

await expect(locator).nth(42).toBeVisible();

选择第42个元素。或者只是将其更改为 0.

之所以不带括号通过是因为它永远不会被调用,那你也可以直接去掉它。 :)