Ale*_*lex 8 typescript playwright
我想检查文本是否QUEUED出现在网站上。我尝试了以下命令
await expect(page1).toContainText('[QUEUED]');
await expect(page1.locator('span')).toContainText('[QUEUED]');
Run Code Online (Sandbox Code Playgroud)
但在第一个例子中,它说需要一个“定位器”,而对于第二个例子,它说
Error: strict mode violation: "span" resolved to 108 elements:
Run Code Online (Sandbox Code Playgroud)
我对确切的元素不感兴趣,我只想检查文本是否QUEUED在页面上至少出现一次。
我还尝试选择 HTML DOM 中看起来像的确切元素
<span data-v-729cd282="" class="">QUEUED</span>
Run Code Online (Sandbox Code Playgroud)
使用表达式
await expect(page1.locator('(//span[@data-v-729cd282])[6]')).toHaveText('[QUEUED]');
Run Code Online (Sandbox Code Playgroud)
但这里我也得到一个错误
waiting for selector "(//span[@data-v-729cd282])[6]"
Run Code Online (Sandbox Code Playgroud)
那么如何正确地做到这一点呢?
在第一种情况下,您需要一个定位器,在第二种情况下,您的定位器发现了太多元素。
您确实需要对确切的元素感兴趣(即使它可以是页面上的任何元素),您将如何找到它们并断言文本是否可见?
您应该使用文本作为定位器在页面上找到一个元素,并检查它是否存在,从而知道文本在页面上,例如
更新
评论是正确的,我发现有更正确的方法来实现这一点,你应该按照以下方式操作 - 上述推理仍然存在。
const element = await expect(page.getByText('QUEUED')).toBeVisible();
Run Code Online (Sandbox Code Playgroud)
因此,只要您尝试验证其在页面上的存在,就应该关心查找元素,无论它是什么元素。
| 归档时间: |
|
| 查看次数: |
20236 次 |
| 最近记录: |