javascript - Cypress 测试的随机元素选择

标签 javascript cypress e2e-testing

目前正在测试本地电影预订网站,我必须在其中输入所选电影的一定数量的门票。此处附有屏幕截图 -

enter image description here

用于重现问题的存储库 - https://github.com/zac11/iCinema

  1. 克隆存储库。
  2. 进入 client 目录并执行 npm i
  3. 从根目录运行 npm start
  4. Web 应用程序将在 localhost:3000 处打开

我希望能够以随机方式输入所选电影的电影票,方法是从四张票中选择一个随机类别,然后输入票号(例如 2)

现在我可以通过以这种方式对定位器进行硬编码来填写票证类别 -

  cy.get('div.tickets-info > div:nth-child(1) > span > b').type(3,{force:true});

输入Junior Ticket类别的票数。我希望能够随机输入四个类别中任何一个类别的票证,而无需对类别定位器进行硬编码。

PS - 存储库包含 cypress 测试,也可以使用 npm run test

运行

最佳答案

您可以根据以下条件随机化类别:

const picked = Math.floor(Math.random()*3); // this gives you a random value from 0 - 3;

// using template string literals - we can add that into picked
cy.get(`div.tickets-info > div:nth-child(`${picked}`) > span > b`).type(3, {force: true})

来自picked - 您可以拥有与类别相关的元素数组:

const categories = ["Junior", "student", "normal", "senior"]

您还可以将类别中的票证值作为对象,并使用它来计算总数。

const categories = [{
  type: "junior", 
  value: 5
}, {
  type: "student",
  value: 3
}, {
  type: "normal"
  value: 10
}, {
  type: "senior",
  value: 3
}]

你可以说,使用选取的值来计算总金额

const value = categories[picked].value * random_amount;
cy.get(".sum-field label:nth-child(1)").should("contain", value) // total

关于javascript - Cypress 测试的随机元素选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427229/

相关文章:

javascript - 错误 : [$controller:ctrlreg]

javascript - 生成一个随机数字序列,然后在 JavaScript 中向该序列附加一个大写字母?

testing - Cypress 中的 .click() 命令未执行其功能

cypress - 为什么 cypress 中的 stub 可能不适用于页面加载后调用的路由

cypress - 在 Cypress 中配置截图文件夹

testing - RequestMock 返回 222 状态代码,没有正文

javascript - 数据表标签搜索

javascript - "multiple variable assignment"到底叫什么?

node.js - TestCafe:将测试从另一个文件导入到当前夹具中