我正在尝试做一些赛普拉斯的断言,以查看它是否包含一个或另一个字符串。它可以是英语或西班牙语,因此任何一个都应该通过测试。
cy.get(el).should('contain', 'submit').or('contain', 'enviar')
显然不起作用。
const runout = ['submit', 'enviar']
const el = '[data-test=btn-submit]'
function checkArray(arr, el) {
for(let i = 0; i < arr.length; i++) {
if(cy.get(el).contains(arr[i])) {
return true
} else {
if (i === arr.length) {
return false
}
}
}
}
cy.expect(checkArray(runout,el)).to.be.true
测试失败,仍然检查两个字符串。
答案 0 :(得分:2)
您可以尝试使用正则表达式,请参见contains#Regular-Expression。
有关某些格式,请参见此问题Regular expression containing one word or another
我认为这样简单,
Type1
首先在Regex101或类似的在线测试仪上进行实验。
也许用
cy.get(el).contains(/submit|enviar/g)
答案 1 :(得分:0)
也许这种方式可以检查“或”状态。 我使用Google主页进行测试,并尝试在测试中找到“ Google搜索”或“非Google搜索”。 如果找不到两者都会抛出错误。
describe('check if contains one of the text', function()
{
it('Test google search button on google homepage',()=> {
let url = 'https://www.google.com/';
let word1 = 'Not Google Search';
let word2 = 'Google Search';
cy.visit(url);
cy.get('input[value="Google Search"]').invoke('attr','value').then((text)=>{
if (text=== word1) {
console.log('found google not search');
}
else if (text === word2) {
console.log('found google search');
}
else {
console.log(text);
throw ("cannot find any of them");
}
})
})
})
在上述word2的测试用例中,找到了它,因此它在控制台中记录了“找到google搜索”。