我在 React 應用程式中找不到使用 Cypress 將 CSS 顏色值保存到變數的方法。
我理解斷言很好:
cy.get('myElement').should('have.css', 'color').and('eq', 'rgb(255, 255, 255)')
問題是我試圖測驗的元素在頁面加載時可能是兩種不同的顏色,所以我不能斷言一種顏色,因為另一種顏色可能是真的,并且兩者都被認為是 vald。
我想要的是能夠將當前顏色存盤到一個變數中,這樣我就知道應該斷言哪種顏色。
喜歡:
var color = cy.get('myElement').should('have.css', 'color')
if(color === 'rgb(255, 255, 255)') {
//assert color to be white
}
else {
//assert color to be black
}
或者:
var color = null
cy.get('myElement').then(($element) => {
color = $element.color()
})
if (color === 'rgb(255, 255, 255)') {
//assert color to be white
}
else {
//assert color to be black
}
uj5u.com熱心網友回復:
您幾乎擁有它,但需要在賽普拉斯命令之后使用.then()或 a .should(),當您分配給變數(第一個代碼塊)時,這些命令不會給您任何有用的東西
cy.get('myElement').should('have.css', 'color')
.should(color => {
const white = 'rgb(255, 255, 255)'
const black = 'rgb(0,0,0)'
const chartreuse = 'rgb(127, 255, 0)'
expect(color).to.be.oneOf([white, black, chartreuse])
}
或者
const white = 'rgb(255, 255, 255)'
const black = 'rgb(0,0,0)'
const chartreuse = 'rgb(127, 255, 0)'
cy.get('myElement')
.should('have.css', 'color')
.and('be.oneOf', [white, black, chartreuse])
第二個代碼塊正確分配顏色值,但時間錯誤 - 在if()...else分配值之前運行。也可以使用 a.then()來糾正時間
let color
cy.get('myElement').then(($element) => {
color = $element.css('color')
})
// other commands...
cy.then(() => {
expect(color).to.be.oneOf([white, black])
})
或者將顏色值分配給別名(但您也可以從 a 訪問別名值.then())。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316776.html
標籤:javascript css 反应 测试 柏
下一篇:如何動態自定義通過的測驗訊息
