問題是來自 Cypress 的 Docker 映像將瀏覽器語言設定為英語,并且頁面上的某些元素被翻譯為英語。看起來這是 Cypress 中的一個錯誤,因為 Docker 映像中的瀏覽器,無論設定的語言如何,都會將某些文本翻譯成英文。即使設定的瀏覽器語言不同。
我的本地瀏覽器語言與 docker 影像中的不同,因此我在本地的某些文本與 dockerimage 中的不同(英語)。現在我必須建立一個解決方法,直到賽普拉斯設法修復這個錯誤。
我希望賽普拉斯選擇一個由邏輯或(||)選擇的元素。但是它不起作用,因為cypress.contains()不支持這一點。為了更好地說明,這里有一個簡單的例子來說明我的意思。你知道如何實作這個嗎?
const value1 = data.text_local_language
const value2 = data.text_english
cy.get("element")
.contains(value1 || value2)
.click();
uj5u.com熱心網友回復:
oneOf如果完全匹配是可以接受的,則存在斷言。
cy.get('element')
.should('satisfy', ($el) => {
expect($el.text()).to.be.oneOf([value1,value2])
})
.click()
uj5u.com熱心網友回復:
您可以檢查文本是否包含.then()命令中的任一文本并對其進行斷言。
const thisText = 'this'
const thatText = 'that'
cy.get('element')
.then($el => {
const text = $el.text()
const thisOrThat = text.includes(thisText) || text.includes(thatText)
expect(thisOrThat, `text contains ${thisText} or ${thatText}`).to.be.true
cy.wrap($el).click()
})
uj5u.com熱心網友回復:
您可以在中使用正則運算式contains()
const value1 = data.text_local_language
const value2 = data.text_english
const regex = new RegExp(`${value1}|${value2}`) // build regex from variables
cy.get("element")
.contains(regex)
.click();
正則運算式(在斜杠內)value1|value2匹配value1或value2(或由管道符號表示|)。
uj5u.com熱心網友回復:
您可以在contains().
要從變數構建正則運算式模式,請使用new RegExp帶有字串運算式的建構式。
const value1 = 'Hello'
const value2 = 'World'
/* using concatenation with plus operator */
cy.get("element").contains(new RegExp(value1 '|' value2))
/* using Array.join() */
const elements = ['Fire', 'Air', 'Water'];
cy.get("element").contains(new RegExp(elements.join('|'))
/* using ES6 template literals */
cy.get("element").contains(new RegExp(`${value1}|${value2}`)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/495146.html
標籤:javascript 柏
