在赛普拉斯中单击完全匹配的文本

巴龙冯比拉

在赛普拉斯(Cypress)中,.contains命令会产生所有匹配的元素,因此对于单击带有文本的下拉项,.contains效果很好。但是我遇到了一个问题,我需要单击一个文本为“导航标签”的下拉菜单项:问题出在同一下拉菜单中有另一个选项称为“新导航标签”,而正在按它首先出现。

有没有一种方法可以单击与所需文本完全匹配的元素?

Given('I click on the {string} drop down option', option => {
  cy.get(`[data-test="dropdown"]`)
    .find('.item')
    .contains(option)
    .click();
});

我使用来部分解决了问题.last(),但是我发现该解决方案含糊不清,因为我尝试使自己的步骤尽可能地可重用,并且这只是一个补丁,可以使它解决该特定问题。

请注意,无法对下拉列表中的每个特定项目进行数据测试,因为这些项目是直接从语义UI呈现的。

布莱斯

正则表达式在这里可以很好地工作。

.contains() 允许使用正则表达式,因此您可以做一个仅与整个字符串匹配的正则表达式(使用^$)。这样,任何带有多余字符的内容都将不匹配(例如“新导航标签”)。因此,例如,您可以执行以下操作:

  cy.get(`[data-test="dropdown"]`)
    .find('.item')
    .contains(/^Navigation Label$/)
    .click();

当您使用变量(例如,option变量)构建表达式时,正则表达式有些棘手在这种情况下,您将构建一个正则表达式,如下所示:

  cy.get(`[data-test="dropdown"]`)
    .find('.item')
    .contains(new RegExp("^" + option + "$", "g"))
    .click();

因此,要完全匹配.contains()

cy.contains(new RegExp(yourString, "g"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

赛普拉斯遍历表格,然后单击从小黄瓜文件传递的匹配文本

如何在赛普拉斯中单击x次

赛普拉斯-从const中删除文本

在赛普拉斯中如何计算包含文本的元素?

用赛普拉斯选择文本

是否可以在赛普拉斯的提示中显示的文本框中输入内容,然后单击“确定”按钮

赛普拉斯中的路径变量

赛普拉斯使用正则表达式检索ID中具有匹配文本的元素

如何使用赛普拉斯选择文本[赛普拉斯]

赛普拉斯如何确定单击单选按钮A时,然后显示下面的文本

赛普拉斯单击/触发未触发eventListeners

赛普拉斯/Javascript - 尝试单击尚未选择的按钮

赛普拉斯单击按钮后等待API

如何通过赛普拉斯触发选择单击?

单击赛普拉斯的下拉菜单

赛普拉斯与SystemJS

赛普拉斯单击具有特定 src 的表中的第 n 个图像

赛普拉斯拦截不匹配的网址

赛普拉斯-错误消息与代码不匹配

赛普拉斯测试-用于URL匹配

赛普拉斯拦截与状态 204 不匹配的路由

赛普拉斯如何从 div 中获取文本并存储在变量中以备后用

赛普拉斯-如何通过文本内容查找?

赛普拉斯如何选择包含文本的选项

如何断言 CSS 属性包含赛普拉斯测试中的一些文本?

赛普拉斯,如何检查输入到字段中的文本?

赛普拉斯(Cypress.IO):如何在select中获取所选选项的文本?

如何在赛普拉斯中打印 div 元素的文本值?

如何在赛普拉斯中存根节点模块?