簡體   English   中英

如果賽普拉斯中不存在元素,如何跳過測試

[英]How to Skip a Test if an element is not present in Cypress

我正在編寫一個測試,如果我登陸一個頁面並且有任何記錄可用,我需要單擊記錄附近的三個點按鈕。 但是如果頁面上沒有可用的記錄,我應該跳過測試。

cy.get('body')
    .then(($body) => {

        if ($body.find('.ant-empty-description').length) {

            cy.log('Element not found. Skip the Test')

        }
        else {
            cy.xpath("//tbody[@class='ant-table-tbody']//tr[" + rowNumber + "]//td[4]//button//em").click()
        }
    })

我正在使用一種方法,如果出現“未找到記錄”消息,我需要跳過測試,否則單擊記錄附近的按鈕。

有時需要有條件地進行測試,但使用<body>作為基本元素是一個錯誤 IMO。

<body>始終在頁面上,但如果從 API 獲取表數據,則可能不會。

測試總是比 API 運行得快,總是看到空行占位符。

使用模式

添加一個intercept()並等待 API 響應。

使用表格行作為條件檢查的基本元素 - 總會有至少一行(但它可能是“無記錄”行)。

cy.intercept(...).as('tableData')

...

cy.wait('@tableData')

cy.get('tbody tr').then($rows => {   // may be only one "No record" row

  const noData = $rows.text().includes('No Record found')

  if (!noData) {
    $rows.eq(rowNumber).find('td').eq(4]).find('button').click()
  }
})

您可以使用mocha 的.skip()功能。 請注意,您必須使用function()而不是箭頭函數。

it('test', function() {
  cy.get('body')
    .then(function($body) {
      if ($body.find('.ant-empty-description').length) {
        cy.log('Element not found. Skip the Test')
        this.skip()
      } else {
        cy.xpath("//tbody[@class='ant-table-tbody']//tr[" + rowNumber + "]//td[4]//button//em").click()
      }
    })
})

話雖如此,我同意@jjhelguero - 以這種方式使用跳過是測試的反模式。 理想情況下,您應該控制一個元素是否會出現在網頁上,並使用您的測試設置來操作頁面以使其具有/不具有該元素。

暫無
暫無

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

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