我有一个测试,即使定位器调用失败,我也想继续。我了解软断言,并且它们按我的用例预期工作,但是是否有
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()
的东西吗?我已经浏览了所有方法,但没有看到类似的东西。
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!
try {
await page.locator('#may-not-exist').click()
} catch (error) {
console.warn('Could not click on #may-not-exist, test will continue:', error);
}
测试将继续,您将在日志中找到click()
是否确实失败了。