我有一张卡片列表,我需要以编程方式选择列表中的第一张卡片,该卡片不包含我在数组中拥有的五个值之一。我已经尝试过了:
cy.get('.parent-element').not().contains('string1', 'string2', 'etc')
这:
cy.get('.parent-element').not('string1', 'string2', 'etc')
hmmm。任何想法。 .parent-element
的任何子元素都是公平的游戏,除了少数例外。
答案 0 :(得分:0)
Foo
foreach
)const selector = ".parent-element li";
const array = ["string1", "string2", "string3"];
cy.get(selector)
.then($els => {
return $els.filter((i, el) => {
// Cypress.$ is jQuery
const textContent = Cypress.$(el).text();
const result = array.filter(str => textContent.includes(str));
// if noone string is been found... we have found the desired element
return !result.length;
});
})
.then($el => {
// $el is your searched element
// some assertions about it
expect($el.text()).not.includes("string1");
expect($el.text()).not.includes("string2");
expect($el.text()).not.includes("string3");
});
是断言,而不是过滤器li
函数返回一些jquery元素.not().contains
(即jQuery)手动过滤掉各种子项让我知道它是否足够清晰