在我们的保险领域中,我们希望使用testcafe实现以下场景:
第一个文件:登录应用程序
第二个文件:创建索赔,将索赔编号存储到全局变量中
第三个文件:在所有测试脚本中使用全局声明的索赔编号。
我们正在使用Page对象模型来实现我们的场景。
请告诉我们如何在testcafe中实现这一点。正如我们所怀疑的,我们在第二个文件中获得的web元素值在测试用例执行后立即消失。那么我们如何在第三个文件中传递web元素的值呢?如果可能的话,请告诉我们详细的步骤。
我们尝试了以下关键字来定义选择器,但没有成功。
global
globalthis
我们希望将数据(获取的web元素值(从一个测试脚本传递到另一个测试剧本。我们的问题是是否可能
//page.js
import { Selector, t } from 'testcafe'; class PageModel { constructor() { global.ClaimNumber = Selector('#Txt_claimnumber'); //selector for Claim Number
this.DateOfEvent = Selector('#dateofevent'); //selector for Date of Event
this.DateOfClaim = Selector('#dateofclaim') //selector for Date of Claim
this.TimeOfEvent = Selector('#timeofevent') //selector for Time of Event
this.TimeOfClaim = Selector('#timeofclaim') //selector for Time of Claim
this.ClaimStatus = Selector('#claimstatus') //selector for Claim Status
this.Save = Selector('#Save'); //selector for Save Button
}};
export default new PageModel();
//test.js
import { Selector } from 'testcafe';
import PageModel from './page';
fixtureGetting Started
.pagehttps://devexpress.github.io/testcafe/example;
var claimid;//claimid will be generated after saving a claim
test('My first test', async t => { await t .typeText(this.DateOfEvent, '20/09/2022')
.typeText(this.DateOfClaim, '20/09/2022')
.typeText(this.TimeOfEvent, '12:00')
.typeText(this.TimeOfClaim, '12:00')
.typeText(this.ClaimStatus, 'xyz')
.click(this.Save)
claimid=global.ClaimNumber.value
//After saving the claim we want to fetch claimid and want to use that claim id in another test scripts
});
//test1.js
import { Selector } from 'testcafe';
import PageModel from './page';
import Test from './test'
fixtureGetting Started
.pagehttps://devexpress.github.io/testcafe/example;
test('My first test', async t => {
var claimid1='23445'; await t.expect(claimid1).eql('claimid');
//want to verify claimid getting from test.js is equal to claimid from test1.js or not
//this is just an example but our requirement is to use claimid (getting from test.js) for different operations into test1.js testscript.
});
你能告诉我们如何实现这种情况吗?
这是这个问题的重复。正如我写信给你的那样,这个例子有一个错误。不能以这种方式全局获取选择器值。ClaimNumber.value
,原因如下:
- 要执行选择器,需要用
await
调用它,因为Selector('#Text_claim number')
返回一个异步函数 - 不能直接从该函数中获取值。您需要先运行它,然后获取具有value属性的DOMNodeState。因此您的
claimid
分配应按如下方式进行:claimid = await global.ClaimNumber().value