Cypress-返回包含多个特定字符串的元素

Cypress-返回包含多个特定字符串的元素,cypress,Cypress,我正在尝试使用Cypress进行自动测试,包括验证约会信息是否正确输入到我们的系统中。为了定位约会信息,我在显示用户的表上定位日期和时间,并从中验证其余数据。因此,我的主要目标是找到与传递到脚本中的约会信息相匹配的日期/时间 我的问题是,我们的站点根据小时槽包含的数字的多少呈现不同的日期/时间。为了保持间隔,一位数的小时数(如下午3:40)在日期和时间之间包含两个空格。多位数小时数(如上午11:23)仅包含一个空格 我需要找到与传递到函数中的内容相匹配的日期/时间,然后搜索相应的行,以确保所有其

我正在尝试使用Cypress进行自动测试,包括验证约会信息是否正确输入到我们的系统中。为了定位约会信息,我在显示用户的表上定位日期和时间,并从中验证其余数据。因此,我的主要目标是找到与传递到脚本中的约会信息相匹配的日期/时间

我的问题是,我们的站点根据小时槽包含的数字的多少呈现不同的日期/时间。为了保持间隔,一位数的小时数(如下午3:40)在日期和时间之间包含两个空格。多位数小时数(如上午11:23)仅包含一个空格

我需要找到与传递到函数中的内容相匹配的日期/时间,然后搜索相应的行,以确保所有其他约会信息都是正确的

我们尝试使用.and(仅作为断言,因此它不会为我们返回元素)、正则表达式(使用/s+指示任意数量的空格)和for循环,但这些都不会返回我们需要的元素

var apptProvider = new Cypress.Promise(resolve => {
    cy.get('.appointments > tbody > tr')
      .contains(Cypress.moment(apptInv[2], 'dddd MMMM Do YYYY')
            .format('ddd MM/DD/YY')
            .toString()+" "+
            Cypress.moment(apptInv[3], 'h:mm:ss a')
              .format('h:mm A')
              .toString(),
        )
      .parent()
      .within(() => {
        cy.get('td:nth-child(2)').then($providerText => {
          resolve($providerText.get(0).innerText);
        });
      });
  });
apptInv是包含以下内容的数组: 0)提供程序名称 1) 办公地址 2) 预约日期
3) 约会时间

您不应该依赖文本表示来缩小这里的约会范围,因为它复杂、棘手且容易更改。相反,您可以生成一个更简单的唯一键,它不受任何UI/UX更改的影响。比如说

<tr data-cy='${appointment.provider + appointment.date + appointmentTime}'>
....
</tr>

....
然后选择具有cy.get('[data cy=..]')的约会。