首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cypress使用regex检索具有id中匹配文本的元素。

Cypress使用regex检索具有id中匹配文本的元素。
EN

Stack Overflow用户
提问于 2020-04-20 21:56:12
回答 3查看 11.6K关注 0票数 4

我有多个带有id features-#####features-#####的div元素,其中#是一个动态图形。

如何让Cypress找到id features-的匹配部分的所有元素,然后以编程的方式单击第一个或第二个元素?

这是我到目前为止所做的,但是我无法找到使用regex检索所有元素的hwo,然后以编程方式处理它们。

代码语言:javascript
运行
复制
  describe('builder features component', () => {
    it('should allow the user to select a features component', () => {
      cy.get(el).should('div.id', /^features-\w+/).first().click();
    });
  });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-20 22:23:39

Cypress建议使用data-属性来选择元素。例如,如果将data-cy="builder-feature"添加到所有功能中,您就不必关心那些只会减慢测试速度的正则表达式。

代码语言:javascript
运行
复制
cy.get('[data-cy="builder-feature"]').first().click()

最佳实践

票数 6
EN

Stack Overflow用户

发布于 2020-04-21 01:49:59

富丘吉尔是对的,他提到的方法应该是你的首选。但是,如果您无法控制应用程序,并且无法添加data-cy属性,则可以使用css选择器语法来实现这一点。

代码语言:javascript
运行
复制
const featuresSelector = '[id^="features-"]'; 

这将选择以.开头的任何id元素。在如何选择ID以特定字符串开始和结束的所有元素?看到一个很好的解释

然后您可以这样使用这个选择器:

代码语言:javascript
运行
复制
cy.get(featuresSelector).first().click(); // click the 1st element in the collection
cy.get(featuresSelector).eq(1).click(); // click the second element (index starts at 0)
cy.get(featuresSelector).eq(-1).click(); // click the last element
cy.get(featuresSelector).each((element, index, collection) => {
    // or event loop through the entire collection
})
票数 9
EN

Stack Overflow用户

发布于 2020-04-20 22:18:04

使用contains()函数。该函数可以接收regex作为参数。

代码语言:javascript
运行
复制
cy.contains(/^features-\w+/).click();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61332700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档