如何在使用过滤器时使用变量并包含在柏树中

问题描述

我想在使用过滤器时使用变量而不是字符串,并使用柏树包含。

下面是我的柏树

const var = "somestring";

cy.get('div[attr="value"])
    .filter(':contains("somestring"))'
    .should('have.length',1);

以上有效。但我想使用用户变量而不是直接将字符串“somestring”传递给过滤器。

如下所示,

const var = "somestring";
cy.get('div[attr="value"])
    .filter(':contains(var))'
    .should('have.length',1);

但这不起作用,因为我在引号内传递了 var 并被视为字符串。

我如何传递包含的 var 。你能帮我解决这个问题吗?我是柏树和编程的新手。谢谢。

解决方法

您可以为此使用 Template Literals。类似的东西:

const var = "somestring";
cy.get('div[attr="value"]')
    .filter(`:contains(“${var}”)`)
    .should('have.length',1);
,

按如下方式编写选择器字符串:

const textOfElement = "somestring";

const filterSelector = `:contains("${textOfElement}")`          // templated string   
// or
// const filterSelector = ':contains("' + textOfElement + '")'  // concatenated string

cy.get('div[attr="value"])
  .filter(filterSelector)
  .should('have.length',1);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...