Javascript 柏树试验的随机化元素选择
目前正在测试一个本地电影预订网站,在那里我必须为选定的电影输入一定数量的门票。这里是附加屏幕的截图- 用于重现问题的存储库-Javascript 柏树试验的随机化元素选择,javascript,cypress,e2e-testing,Javascript,Cypress,E2e Testing,目前正在测试一个本地电影预订网站,在那里我必须为选定的电影输入一定数量的门票。这里是附加屏幕的截图- 用于重现问题的存储库- 克隆回购协议 进入client目录并执行npm i 从根目录运行npm start Webapp将在localhost:3000打开 我希望能够以一种随机的方式输入所选电影的电影票,这样它可以从四部电影票中选择一个随机类别,然后输入票号,比如2 现在,我可以通过以下方式硬编码定位器来填写票证类别- cy.get('div.tickets-info > div:
client
目录并执行npm i
npm start
localhost:3000打开
cy.get('div.tickets-info > div:nth-child(1) > span > b').type(3,{force:true});
输入<代码>初级车票类别的车票计数。我希望能够在四个类别中的任意一个类别中随机输入票证,而无需硬编码类别定位器
PS-存储库中还包含cypress测试,可以使用npm运行测试运行这些测试。您可以根据以下内容对类别进行随机化:
const picked=Math.floor(Math.random()*3);//这会给你一个0-3之间的随机值;
//使用模板字符串文字-我们可以将其添加到
cy.get(`div.tickets-info>div:n子项(`${pickets}')>span>b`)。键入(3,{force:true})
从拾取-您可以拥有与类别相关的元素数组:
const categories=[“初级”、“学生”、“普通”、“高级”]
您还可以将类别
中的票证的值作为对象,并将其用于计算总数
常量类别=[{
类型:“初级”,
价值:5
}, {
输入:“学生”,
价值:3
}, {
类型:“正常”
数值:10
}, {
类型:“高级”,
价值:3
}]
您可以说,使用拾取的值来计算总金额
const value=类别[picked]。值*随机金额;
cy.get(“.sum字段标签:第n个子项(1)”)。应(“包含”,值)//总计
我需要对我们的应用程序执行同样的操作,因此我想出了一个简单的方法来实现这一点。下面是我在cypress/support/commands.js中找到的代码:
Cypress.Commands.add('any', { prevSubject: 'element' }, (subject, size = 1) => {
return cy.wrap(subject).then(elementList => {
// this line enables me to use this command with either cy.get() or cy.wrap()
elementList = (elementList.jquery) ? elementList.get() : elementList;
elementList = Cypress._.sampleSize(elementList, size);
elementList = (elementList.length > 1) ? elementList : elementList[0];
return cy.wrap(elementList);
});
});
我还可以在自定义命令中使用自定义日志记录。为了清晰起见,我从上面的代码中删除了它
然后在测试中使用它,就像其他任何cy命令一样:
cy.get('div.tickets-info > div > span > b').any().type(3,{force:true});
或者,如果您需要多个:
cy.get('div.tickets-info > div > span > b').any(2).each(element => {
cy.wrap(element).type(2, { force: true });
});
const picked=Math.floor(Math.random*3)代码>返回一个NaN
。我使用'const picked=Math.floor(Math.random()*3)+1修复了它;抱歉,那是个打字错误-晚上做得太晚了