Javascript 无法在数组中找到并选择项

Javascript 无法在数组中找到并选择项,javascript,cypress,Javascript,Cypress,我正在学习使用cypress.io,同时也在学习JavaScript 我目前希望将一个内部应用程序作为一个概念的证明来证明为什么我们应该考虑切换到CyPress .IO而不是Webdriver。 我当前的问题是,我有一个需要循环的元素集合,其中包含某个字符串,然后选择这个元素 我的代码正确地定位了所有元素(与类一起定位),但当我尝试在元素中循环查找具有特定字符串的元素时,我遇到了麻烦 代码如下- //Selecting profiles cy.get('.card') .each(($e

我正在学习使用cypress.io,同时也在学习JavaScript

我目前希望将一个内部应用程序作为一个概念的证明来证明为什么我们应该考虑切换到CyPress .IO而不是Webdriver。 我当前的问题是,我有一个需要循环的元素集合,其中包含某个字符串,然后选择这个元素

我的代码正确地定位了所有元素(与类一起定位),但当我尝试在元素中循环查找具有特定字符串的元素时,我遇到了麻烦

代码如下-

//Selecting profiles
cy.get('.card')
    .each(($el) => {
        if ($el.contains() === profile) {
            cy.wrap($el).click();
        }
    })
概要文件变量被传递到该代码段所在的函数中

我正在查看.each和.contains函数的cypress文档

但是当我运行这段代码时,我得到一个异常

TypeError:$el.contains不是函数

但是看看cypress文档,我可以将函数附加到$el对象

.get('ul>li').each(($el, index, $list) => {
// $el is a wrapped jQuery element
if ($el.someMethod() === 'something') {
  // wrap this element so we can
  // use cypress commands on it
  cy.wrap($el).click()
} else {
  // do something else
}})
.contains()
是一个Cypress函数。正如doc页面所说,
$el
是一个jQuery包装的元素,而不是Cypress包装的元素,因此
.contains()
对它不起作用

这就是说,
.contains()
用于过滤选择,并将返回一个值,而不是布尔值或字符串,因此这种使用
.contains()
的特殊方法从一开始就不起作用。这是Cypress将其命令排队的副作用-有关更多信息,请参阅


对于您试图做的事情,我建议利用原生jQuery元素:

//Selecting profiles
cy.get('.card')
    .each(($el) => {
        if ($el.text() === profile) {
            cy.wrap($el).click();
        }
    })

注意:我假设
profile
是一个字符串。如果不是,则可能需要修改此代码。

接受答案。非常感谢。一旦我读了你的评论并回到文档,现在一切都有了意义。很高兴它起到了作用!:)