javascript - 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。
如何才能做到这一点?
解决方案
每个测试都从头开始,这意味着干净的配置文件,这就是为什么您没有被授权,当第二次测试开始时。最简单的修复方法是在第二次测试开始时移动您的登录代码。但是,这不是一个好的做法,因为您可能需要在大部分测试之前获得授权。要解决此问题,您可以选择以下之一:
1)某些情况下的Http Auth
2)角色
3)使用beforeEach Hook。只需将登录代码放入此钩子,它将在夹具中的每个测试之前执行。
推荐阅读
- docker - Docker:如何更改 php-fpm 配置文件
- excel - 计算文本是否连续出现在多列中
- arrays - 如何分别输出实部和虚部,而不是只有一个复向量
- react-native - 反应原生,未定义不是对象(评估'this.state.thing = input')
- android - 将cordova的qr-scanner插件与Angular集成
- random - 我们可以在 Julia 中生成任意数字吗?
- machine-learning - 获取DBSCAN的集群文档
- android-studio - 如何将 ViewPager 插入自定义 RecyclerView android
- ubuntu - 安装 openstack Ubuntu 时出错
- powershell - Invoke-RestMethod 身份验证在本地服务器上失败