获取cypress中数组中不包含值的第一个元素

时间:2019-02-04 22:49:26

标签: testing automation automated-tests cypress end-to-end

我有一张卡片列表,我需要以编程方式选择列表中的第一张卡片,该卡片不包含我在数组中拥有的五个值之一。我已经尝试过了:

cy.get('.parent-element').not().contains('string1', 'string2', 'etc')

这:

cy.get('.parent-element').not('string1', 'string2', 'etc')

hmmm。任何想法。 .parent-element的任何子元素都是公平的游戏,除了少数例外。

1 个答案:

答案 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)手动过滤掉各种子项

让我知道它是否足够清晰