亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

賽普拉斯測試的隨機元素選擇

賽普拉斯測試的隨機元素選擇

慕工程0101907 2022-07-15 10:09:32
目前正在測試一個本地電影預訂網站,我必須在其中輸入選定電影的一定數量的票。此處附加屏幕的屏幕截圖 -用于重現問題的存儲庫 - https://github.com/zac11/iCinema克隆回購。進入client目錄并執行npm inpm start從根目錄運行。Webapp 將在localhost:3000我希望能夠以隨機方式輸入所選電影的電影票,這樣它可以選擇四個票中的隨機類別并輸入票號,例如 2現在我可以通過以這種方式對定位器進行硬編碼來填寫票證類別 -  cy.get('div.tickets-info > div:nth-child(1) > span > b').type(3,{force:true});輸入Junior Ticket類別的票數。我希望能夠在四個類別中的任何一個類別中隨機輸入一張票,而無需對類別定位器進行硬編碼。PS - 存儲庫包含柏樹測試也可以使用npm run test
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

您可以根據以下內容隨機化類別:


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"]

您還可以將門票的值categories作為對象并將其用于計算總數。


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


查看完整回答
反對 回復 2022-07-15
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

我需要對我們的應用程序做同樣的事情,所以我想出了一個自定義命令來輕松實現這一點。這是我提出的代碼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);

  });

});

我還可以在自定義命令中使用帶有Cypress.log()的自定義日志記錄。為了清楚起見,我從上面的代碼中刪除了它。


然后,您可以像使用任何其他 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 });

});


查看完整回答
反對 回復 2022-07-15
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號