cypress - 赛普拉斯:获取包含给定字符串/正则表达式的所有元素
问题描述
我正在尝试用柏树测试分页栏。
我想断言仅在此栏中包含数字的按钮数量,并忽略其他按钮(上一页,下一页...)
按钮看起来像这样:
<button class="...">33</button>
我首先尝试了这个测试:
cy.get('.pagination')
.find('button')
.contains(/\d+/)
.should('have.length.gte', 2)
但这给了我一个警告,即 contains 只会返回一个元素,使“长度”测试无用。
我还尝试了许多基于过滤器的组合,“:contains”jquery 关键字,但没有一个有效:
.filter(`:contains('/\d+\')`)
// >> finds nothing
.filter((elt) => { return elt.contains(rx) })
// >> throws 'elt.contains is not a function'
.filter((elt) => { return rx.test(elt.text()) })
// >> throws 'elt.text is not a function'
.filter(() => { return rx.test(Cypress.$(this).text()) })
// filter everything and return nothing, even the buttons containing the text '1'
解决方案
.filter()
回调有参数(index, elt) => {}
,这意味着你可以像这样使用它
cy.get('.pagination')
.find('button')
.filter((index, elt) => { return elt.innerText.match(/\d+/) })
.should('have.length.gte', 2)
推荐阅读
- node.js - Angular + Nodejs Express:错误跨域请求被阻止:同源策略不允许读取远程资源
- ms-access - 具有多个条件的 IIf And 语句
- graphql - 客户端可以在一个连接中订阅多个 graphql 订阅吗?
- backup - rsync 参数用于创建、删除但不更新文件
- c# - 使页面无法从 URL 访问,只能通过单击页面上的链接访问
- c - 我自己实现 strlcpy 的问题?
- quarkus - Qurkus:如何在 application.yaml 中引用系统“主机名”
- tableau-api - Tableau 删除行
- node.js - 一个查询中的 node-oracledb 多个语句
- java - JFreeChart XY 图中图标的角度