剧作家未找到数据testId

问题描述 投票:0回答:1

我使用 data-testid 来定位页面上的标题输入字段。输入字段具有标签“createTitle”,但是当我使用 getByTestId 方法定位它时,找不到该元素并且测试超时。使用 VS 代码功能选择定位器并选择我要访问的字段,返回要使用的建议:

locator('[data-testid="createTitle"]')
await test.step(`Input title as: ${title}`, async () => {
            
            // Failing solution
            await this.page.getByTestId("createTitle")

            // Passing solution
            await this.page.locator('[data-testid="createTitle"]')

            .fill(title)
        })

(显然,当我运行代码时,我注释掉了上述解决方案之一,我并没有尝试连续运行它们)

根据我对剧作家的理解,这些测试应该返回完全相同的字段,因为它们应该定位相同的标签,该标签显然是可访问的,否则第二个选项将不起作用,所以我不明白为什么 getbytestId 不起作用。

给出的超时错误信息是:

Test timeout of 30000ms exceeded.

    Error: locator.fill: Test timeout of 30000ms exceeded.
    Call log:
      - waiting for getByTestId('createTitle')

我想使用 getByTestId 方法访问此页面元素,以使内容与代码中的其他位置保持一致。这是我第一次遇到这种方法表现不正常的情况

typescript automated-tests playwright
1个回答
0
投票

不要

await
定位器。所有定位器都需要某种操作,否则它们什么也不做(定位器不是承诺):

await this.page.getByTestId("createTitle").waitFor();

您还可以使用

expect
断言。

© www.soinside.com 2019 - 2024. All rights reserved.