如何在Playwright中获取指定JS函数返回值并验证执行结果?
在Playwright中获取并验证页面脚本返回值的解决方案
问题分析
你之前的代码没拿到预期值,核心原因是cy.sdk.engine.block.findBy('image')是异步方法(返回Promise),直接在page.evaluate中返回它只会得到Promise对象,而非实际的ID值。
正确实现步骤
1. 正确获取异步脚本的返回值
在page.evaluate内部await这个异步方法,Playwright会自动解析Promise并返回最终结果:
const imageId = await page.evaluate(async () => { // 等待异步方法完成并返回ID return await cy.sdk.engine.block.findBy('image'); });
2. 将值显示在测试结果中
- 用
console.log打印,Playwright会把控制台输出捕获到测试报告里:console.log('获取到的图片ID:', imageId); - 也可以在断言中附带值,让测试报告直接展示验证细节:
expect(imageId).toBeDefined('图片ID未成功获取');
3. 验证脚本执行正常
通过try-catch捕获执行异常,同时断言返回值的有效性,确保脚本没出错且结果符合预期:
let imageId; try { imageId = await page.evaluate(async () => { return await cy.sdk.engine.block.findBy('image'); }); console.log('脚本执行成功,图片ID:', imageId); } catch (error) { // 抛出错误让测试标记为失败,并展示错误信息 throw new Error(`执行获取图片ID脚本失败: ${error.message}`); } // 验证返回的ID格式有效 expect(typeof imageId).toBe('string'); expect(imageId).not.toBeEmpty();
内容的提问来源于stack exchange,提问作者paveltk
相关产品推荐
相关产品推荐

