我是cypress的新手,我试图将以下文本结尾的数字提取到一个变量中. 元素是"cy.get(':nth-child(3) > span')",文本是"1-44 of 44",我需要提取文本后面的数字,值可能是1 to 1000

我从另一个问题中获取了代码,但它没有回答我的问题,因为字符串中有超过1的数字.

我真的很感激一些帮助.

cy.get(':nth-child(3) > span').invoke('text').as('NoR')
  .then((NoR) => {
    var fullNoR = NoR;
    var pattern = /[0-9]+/g;
    var NewNOR = fullNoR.match(pattern);
    console.log(NewNOR);
  });

推荐答案

regex模式匹配字符串"1-44 of 44"中的任何数字,并且字符串的三个部分匹配.

您的console.log(NewNOR)显示了这三个数字的数组:['1', '44', '44'],所以您想要第三个

cy.get(':nth-child(3) > span').invoke('text')
.then((text) => {
  const pattern = /[0-9]+/g
  const numbers = text.match(pattern)   // extracts 3 results
  console.log(numbers)                  //  ['1', '44', '44']
  const total = numbers[2]              // third result
  return +total                         // putting + in front to extract number
})
.should('eq', 44)

enter image description here


要只获取最后一位数字,请向模式添加$-这只提取文本结尾的数字.

cy.get(':nth-child(3) > span').invoke('text')
.then((text) => {
  const pattern = /[0-9]+$/g
  const total = text.match(pattern)[0]   // extracts 1 result only
  console.log(total)                     // '44'
  return +total                         
})
.should('eq', 44)

Javascript相关问答推荐

如何在react-Router-dom 6中Forking 路由?

为什么在集内和集外会产生不同的promise 状态(使用Promise.race)?

如何编辑代码FlipDown.js倒计时?

容器如何更改默认插槽中子项的显示?

如何访问Json返回的ASP.NET Core 6中的导航图像属性

每次子路由重定向都会调用父加载器函数

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

Angular:动画不启动

WebRTC关闭navigator. getUserMedia正确

制作钢琴模拟器,并且在控制台中不会执行或显示该脚本

在执行异步导入之前判断模块是否已导入()

如何在Angular17 APP中全局设置AXIOS

使用Google API无法进行Web抓取

如何将数据块添加到d3力有向图中?

如何在Svelte中从一个codec函数中调用error()?

使用Nuxt Apollo在Piniastore 中获取产品细节

搜索功能不是在分页的每一页上进行搜索

如何在Press上重新启动EXPO-AV视频?

如何用javascript更改元素的宽度和高度?

如何在AG-Grid文本字段中创建占位符