Javascript TestCafe:页面对象模型-使用一个公共引用访问所有实例化对象
页面模型-Javascript TestCafe:页面对象模型-使用一个公共引用访问所有实例化对象,javascript,testing,automated-tests,e2e-testing,testcafe,Javascript,Testing,Automated Tests,E2e Testing,Testcafe,页面模型- import { Selector } from 'testcafe'; export default class Page { constructor () { this.nameInput = Selector('#developer-name'); } } 页面模型2- import { Selector } from 'testcafe'; export default class Page2 { constructor () {
import { Selector } from 'testcafe';
export default class Page {
constructor () {
this.nameInput = Selector('#developer-name');
}
}
页面模型2-
import { Selector } from 'testcafe';
export default class Page2 {
constructor () {
this.nameInput2 = Selector('#tester-name');
}
}
用于实例化上述内容的通用规范-
import Page from './page-model';
import Page2 from './page-model2';
const page = new Page();
const page2 = new Page2();
我们是否可以使用单个文件\spec实例化上述两个页面,然后从单个引用变量跨页面访问所有选择器?如果您不想在每个测试中创建新的实例,可以直接在model.js中导出它们: test.js
import { pageOne, pageTwo } from './model';
fixture `fixture 1`
.page `http://example.com`;
test(`test`, async t => {
await t
.click(pageOne.el1)
//...navigation to page two
.click(pageTwo.el2);
});
import selectors from './selectors';
fixture `fixture 1`
.page `http://example.com`;
test(`test`, async t => {
await t
.click(selectors.el1)
.click(selectors.el2);
});
model.js
import { Selector } from 'testcafe';
class PageOne {
constructor () {
this.el1 = Selector('#el1');
//....
}
}
class PageTwo {
constructor () {
this.el2 = Selector('#el2');
//....
}
}
export const pageOne = new PageOne();
export const pageTwo = new PageTwo();
更新
此外,您还可以在单独的模块中组织所有选择器,如下所示:
test.js
import { pageOne, pageTwo } from './model';
fixture `fixture 1`
.page `http://example.com`;
test(`test`, async t => {
await t
.click(pageOne.el1)
//...navigation to page two
.click(pageTwo.el2);
});
import selectors from './selectors';
fixture `fixture 1`
.page `http://example.com`;
test(`test`, async t => {
await t
.click(selectors.el1)
.click(selectors.el2);
});
选择器.js
import { Selector } from 'testcafe';
export default {
el1: Selector('#el1'),
el2: Selector('#el2'),
//....
}
谢谢你的回复。但是我希望有一个通用的参考规范,在这个规范中,我只需要导入一个函数并跨多个文件\页面访问选择器。下面是这样的内容-我不确定TestCafe是否允许我们实现这一点?”从“./model”导入{commonSelectorSpec};夹具
夹具1
。页面http://example.com
;test(test
,async t=>{wait t t.单击(commonSelectorSpec.el1)/…导航到第二页。单击(commonSelectorSpec.el2);});'谢谢你的澄清。请参阅上面更新的答案。感谢您的回复。除此之外,您能否建议如何在包含选择器的另一个单独页面上执行此操作?