【问题标题】:How to check for some text on a webpage using playwright?如何使用剧作家检查网页上的某些文本?
【发布时间】:2022-11-14 16:44:10
【问题描述】:

我想检查文本 QUEUED 是否出现在网站上。我尝试了以下命令

await expect(page1).toContainText('[QUEUED]');
await expect(page1.locator('span')).toContainText('[QUEUED]');

但是在第一个示例中,它说需要一个“定位器”,而对于第二个示例,它说

Error: strict mode violation: "span" resolved to 108 elements:

我对确切的元素不感兴趣,我只想检查文本 QUEUED 是否在页面上至少出现一次。

我还尝试选择 HTML DOM 中看起来像的确切元素

<span data-v-729cd282="" class="">QUEUED</span>

使用表达式

await expect(page1.locator('(//span[@data-v-729cd282])[6]')).toHaveText('[QUEUED]');

但在这里我也得到一个错误

waiting for selector "(//span[@data-v-729cd282])[6]"

那么如何正确地做到这一点呢?

【问题讨论】:

    标签: typescript playwright


    【解决方案1】:

    在第一种情况下,您需要一个定位器,在第二种情况下,您的定位器发现太多元素。

    您确实需要对确切的元素感兴趣(即使它可以是页面上的任何元素),您将如何定位它们并断言文本是否存在?
    您应该通过使用文本作为定位器在页面上找到一个元素,并检查它是否存在,从而知道文本在页面上,例如

    const element = await page.getByText('QUEUED');
    await expect(element !== undefined ).toBeTruthy();
    

    所以你应该关心找到一个元素,不管它是什么元素,只要你试图验证它在页面上的存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-04
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2023-03-13
      • 2022-09-24
      相关资源
      最近更新 更多