首页 > 解决方案 > 当页面对象中声明的断言在 TestCafe 的同一测试中被调用两次时,DOM 快照警告

问题描述

我在页面对象中声明了异步函数,该函数定义了几个断言来验证页面上是否存在元素,我必须在同一个测试中调用此函数两次,但我收到警告 - “您将 DOM 快照属性传递给断言't.expect()' 方法“即使我没有在 t.expect() 中使用 await 关键字。

请让我知道我怎样才能摆脱这个警告。

fixture('Assertions in Page Object test suite').beforeEach(async t => {
  await t.useRole(login);
});

test('Validate UI for sample page, async t => {
  await pageObject.validateTableUI(t);
  await t.click(pageObject.changeTab); 
  await pageObject.validateTableUI(t);
});

Page 对象方法是:

export default class SamplePage {
constructor() {
this.table = Selector('table');
this.tableHeaders = Selector('table thead th);
this.changeTab = Selector('tab);
}

async validateTableUI(t){
await t
      .expect(this.table.visible)
      .ok()
      .expect(this.tableHeaders.visible)
      .ok()
      .expect(this.tableHeaders.nth(1).textContent)
      .contains('Column 1')
      .expect(this.tableHeaders.nth(2).textContent)
      .contains('Column 1');
}

标签: testingautomated-testsui-automatione2e-testingtestcafe

解决方案


不幸的是,没有官方方法可以禁用这些警告。我们知道这个错误。您可以在此 GitHub 线程中跟踪我们的进度。

作为临时解决方法,您可以.expect按如下方式重写您的调用:

.expect(
    this.table.visible
)

推荐阅读