如何对字符串中的数字段做减法并保留前导零用于XPath定位
解决代码
let courseID = "PR001-CC001578"; // 拆分字符串,分别获取前缀和CC后的数字串 let currCourseID = courseID.split('CC'); let prefix = currCourseID[0]; let numStr = currCourseID[1]; // 记录数字串原始长度,用于后续补前导零 const originNumLength = numStr.length; // 数字减1后补前导零到原始长度 let newNumStr = (Number(numStr) - 1).toString().padStart(originNumLength, '0'); // 拼接得到完整的新ID let fullNewId = prefix + newNumStr; console.info("other Course ID:", fullNewId); var courseIDAssetsPg="//div[contains(text(),'%s')]"; var replaceCCId = courseIDAssetsPg.replace("%s", fullNewId); var CCIdLoc = element(by.xpath(replaceCCId)); console.info("locator: ", CCIdLoc )
输出结果
other Course ID: PR001-001577 locator : //div[contains(text(),'PR001-001577')]
说明
- 用
padStart()方法可以在字符串开头填充指定字符,直到字符串达到指定长度,刚好解决数字运算后前导零丢失的问题。 - 拆分字符串后保留了
PR001-前缀,拼接后直接符合预期的完整ID格式。
如果运行环境不支持ES6的padStart方法,可以用以下补零函数替代:
function padStart(str, targetLength, padChar) { str = str.toString(); while (str.length < targetLength) { str = padChar + str; } return str; } // 调用方式:let newNumStr = padStart((Number(numStr) - 1).toString(), originNumLength, '0')
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

