相当于剧作家中定位器的软断言

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

我有一个测试,即使定位器调用失败,我也想继续。我了解软断言,并且它们按我的用例预期工作,但是是否有

page.locator().someMethod()
的等效项?

// test will continue executing past this line if #some-selector doesn't contain 'some text'
expect.soft(page.locator('#some-selector')).toHaveText('some text')

// this button may not exist, but I still want to try clicking it
await page.locator('#may-not-exist').click()

// how can I run this if the line above it fails?
await page.locator('#will-exist').click()

我希望测试的最后一行能够运行,无论expect.soft是否失败如果page.locator调用失败。

Playwright API 中有类似

page.locator.soft()

 的东西吗?我已经
浏览了所有方法,但没有看到类似的东西。

testing e2e-testing playwright
2个回答
3
投票
测试测试到这里就停止了:

await page.locator('#may-not-exist').click() // not at an assertion line
因为 Playwright 将无法与不存在的元素进行交互。

如果您必须点击

#will-exist

,您可以这样写:

expect.soft(page.locator('#some-selector')).toHaveText('some text'); const mayNotExist = await page.locator('#may-not-exist'); // checks if locator is visible on DOM if (mayNotExist.isVisible()) { await mayNotExist.click(); } await page.locator('#will-exist').click(); // clicks on locator anyway!
    

0
投票
您可以用 try/catch 块包装容易出错的行:

try { await page.locator('#may-not-exist').click() } catch (error) { console.warn('Could not click on #may-not-exist, test will continue:', error); }
测试将继续,您将在日志中找到

click()

是否确实失败了。

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