簡體   English   中英

如何在賽普拉斯點擊 x 次

[英]How to click x number of times in Cypress

我的網站上有一個對象列表,它們旁邊都有“添加”按鈕。 單擊第一個“添加”按鈕時,將添加該 object 並且該行消失並被下一個替換。 object 名稱相同。 我想.click() 三次添加列表中的前三個對象,然后再保存。 我怎樣才能做到這一點?

我知道 .click() 單擊單個 object。 我也知道 .click ({ multiple: true}) 單擊頁面上的所有對象。 但是,我希望它在第三次之后停止點擊。

當前設置為單擊多次以添加列表中的所有對象(這是不正確的):

    cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
       .should('exist')
       .click({ multiple: true });

要錘擊單擊按鈕,您可以使用以下命令:

for(let n = 0; n < 10; n ++){
  cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
    .click()
}

multiple: true用於單擊多個元素,例如單擊頁面上的所有按鈕。

如果您只需要點擊幾下,您也可以使用 go 來獲得這個出色的解決方案:

cy.get("button").click().click().click()
.click().click().click().click().click()
.click().click()

在我看來,這種語法還可以很好地了解用戶在這種情況下會做什么。

問題出在您的選擇器上。 如果您有 n 個按鈕,並且想要單擊所有按鈕,那么您需要匹配所有按鈕,而不僅僅是一個按鈕。 因此,尋找匹配所有選擇器的選擇器(例如,您的“添加”按鈕所獨有的類)。 然后,您可以使用 .each() 遍歷它們並在到達某個索引時跳出循環:

cy.get('#your_selector_to_your_add_buttons')
                .each(($el, $index) => {
                    if($index == 3){
                        return false;
                    }
                    cy.wrap($el).click()
                } )

你只需要在點擊后移動你的斷言並說點擊直到不存在

       .click({ multiple: true })
       .should('not.exist');```

你可以使用 lodash https://lodash.com/docs/4.17.15#times

import { times } from 'lodash'

  times(2, () => {
    cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
      .click()
  })

你也可以這樣做:

Cypress._.times(10, () => {
    cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button').click()
})

我能找到的最好方法是使用Wait<\/a> for a number of milliseconds 或等待別名資源解決,然后再繼續執行下一個命令。

cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
       .should('exist')
       .click();
cy.wait(500)

cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
       .should('exist')
       .click();
cy.wait(500)

cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
       .should('exist')
       .click();

根據 Kamran Eyyubov 和 monikapatelIT 的評論,我能夠使用 cypress 公開的 Lodash 庫提出以下內容來模擬按鈕混搭。

  // Fetch a reference outside the loop so it can be referenced inside the
  // loop.
  cy.get('#submit-button')
    .as('submitButton');

  // Simulate a button mash. Click the button 10 times.
  Cypress._.times(10, function () {
    cy.get('@submitButton')
      // The submit button is disabled on the first click, so
      // force is set to TRUE to prevent the test from failing
      // due to clicking a disabled element.
      .click({force: true});
  });
// option 1
cy.get('button')
  .dblclick()

// option 2
cy.get('button')
  .click({ multiple: true })

我做了並且命令

Cypress.Commands.add('MultiClick',(element:string,times: number) => {
    for(let n = 0; n < times; n ++){
        cy.get(element).click({ force: true })
    }
})

然后使用它

cy.MultiClick('[data-cy=qty-product]',2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM