我在使用 cypress 單擊選擇元素時遇到問題。這是要單擊的元素:

我收到這個錯誤。
cy.click()不能在<select>元素上呼叫。請改用cy.select()命令來更改值。
這是我的代碼:
cy.get('[name^=shopveg]').click()
搜索后,一些人建議使用 trigger 命令。將代碼更改為:
cy.get('[name^=shopveg]').trigger('click')
該步驟在 cypress 執行中通過,但未執行點擊。
uj5u.com熱心網友回復:
正如訊息所說,.select()是要使用的命令
cy.get('[name^=shopveg]').select('Bananas')
這是因為<select>行為是由 Web 組件(參見slot標記)而不是 JavaScript 實作的,因此沒有可用的點擊處理程式。
uj5u.com熱心網友回復:
鑒于選擇看起來像一個“特殊”實作,即帶有插槽的 Web 組件,您可能需要單擊它打開以查看選項值(延遲加載)。
如果是這樣,請嘗試使用cypress-real-events插件
安裝
npm install cypress-real-events
// or
yarn add cypress-real-events
在 /cypress/suport/e2e.js
import "cypress-real-events";
測驗
cy.get('[name^=shopveg]')
.should('have.value', '1') // confirm initial value
.realClick() // click open
cy.contains('option', 'Batatas') // this option exists
cy.contains('option', 'Arroz') // this option exists
cy.contains('option', 'Bananas') // this option exists
// etc
cy.get('[name^=shopveg]')
.select('Bananas') // select new option
.should('have.value', '3') // confirm new value
uj5u.com熱心網友回復:
要驗證選擇選單中的值,您可以使用 遍歷它們cy.each()。
const options = [ "Batatas", "Arroz", "Bananas", "Tomates", "Macaz" ];
cy.get('[name^=shopveg]').find('option').each(($el, index) => {
cy.wrap($el).should('have.text', options[index]);
});
正如@Grainger 回答的那樣,您可以使用cy.select()to pick a value。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/537001.html
