首页 > 解决方案 > Testcafe - 测试多个页面

问题描述

我正在测试一个带有登录页面的网站,然后其他页面仅在登录后可见。

我创建了一个login_page.js模型如下:

// my_login_page_model.js
import { Selector, t } from 'testcafe';

export default class LoginPage {
  constructor () {
    this.email = Selector('#email');
    this.password = Selector('#password');
    this.signin = Selector('#signinButton');
  }
}

然后我在登录后为页面创建了类似的页面模型。

然后在我的测试文件上实例化一个登录页面对象,运行登录页面测试

// my_test_spec.js
test('login in', async t => {
  await t
    .typeText(loginPage.email, config.name)
    .typeText(loginPage.password, config.password)
    .click(loginPage.signin);
  await t.expect(getURL()).contains(pageUrl);
});

test('second test', async t => {
console.log('Creating a new experience');
  await t
    .click(// click a button on the following page);
});

问题是第二个测试从 开始login page,当然,它失败了,因为它在登录后找不到页面的 id。

如何才能做到这一点?

标签: javascripttestingautomated-testse2e-testingtestcafe

解决方案


每个测试都从头开始,这意味着干净的配置文件,这就是为什么您没有被授权,当第二次测试开始时。最简单的修复方法是在第二次测试开始时移动您的登录代码。但是,这不是一个好的做法,因为您可能需要在大部分测试之前获得授权。要解决此问题,您可以选择以下之一:

1)某些情况下的Http Auth

2)角色

3)使用beforeEach Hook。只需将登录代码放入此钩子,它将在夹具中的每个测试之前执行。


推荐阅读