获取第一个不包含柏树数组中值的元素
Get first element that does not contain value in an array in cypress
我有一个卡片列表,我需要以编程方式 select 列表中第一个不包含数组中五个值之一的卡片。我试过这个:
cy.get('.parent-element').not().contains('string1', 'string2', 'etc')
还有这个:
cy.get('.parent-element').not('string1', 'string2', 'etc')
嗯。对此有任何想法。除了这些少数例外,.parent-element
的任何子元素都是公平游戏。
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
)
- 您使用的
.not().contains
是断言,而不是过滤器
cy.get
函数returns一些jquery元素
- 使用
Cypress.$
(即jQuery)手动过滤掉各种子项
让我知道是否够清楚
我没有使用这样的命令:
cy.get('.alert-radio-group > button')
.not(`:contains(\'${valueSelected1}\')`)
.not(`:contains(\'${valueSelected2}\')`)
.first()
.click();
我有一个卡片列表,我需要以编程方式 select 列表中第一个不包含数组中五个值之一的卡片。我试过这个:
cy.get('.parent-element').not().contains('string1', 'string2', 'etc')
还有这个:
cy.get('.parent-element').not('string1', 'string2', 'etc')
嗯。对此有任何想法。除了这些少数例外,.parent-element
的任何子元素都是公平游戏。
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
) - 您使用的
.not().contains
是断言,而不是过滤器 cy.get
函数returns一些jquery元素- 使用
Cypress.$
(即jQuery)手动过滤掉各种子项
让我知道是否够清楚
我没有使用这样的命令:
cy.get('.alert-radio-group > button')
.not(`:contains(\'${valueSelected1}\')`)
.not(`:contains(\'${valueSelected2}\')`)
.first()
.click();