新手求助:编写JavaScript函数获取指定XPath元素文本并循环断言
基于XPath获取元素并完成断言验证的JavaScript函数
这里是修改后的函数,能实现你需要的功能:
function javaScriptStep() { // 定义需要验证的预期文本列表 const expectedTexts = ['Economy', 'Business', 'Latitude', 'Premium']; // 目标XPath表达式 const targetXPath = "//ui-table-1/div/following-sibling::div[@role='title']"; // 执行XPath查询,获取有序的元素快照 const elementsSnapshot = document.evaluate( targetXPath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); // 循环遍历每个元素,逐一做断言验证 for (let i = 0; i < elementsSnapshot.snapshotLength; i++) { const currentElement = elementsSnapshot.snapshotItem(i); // 取出元素文本并去除首尾空白 const actualText = currentElement.textContent.trim(); // 断言实际文本与预期一致,不一致则输出错误信息 console.assert( actualText === expectedTexts[i], `第${i + 1}个元素验证失败:预期文本为"${expectedTexts[i]}",实际为"${actualText}"` ); } // 回调返回验证完成的结果 callback('所有元素断言验证完成'); }
关键步骤说明
- 先定义
expectedTexts数组,存放你需要验证的4个文本,注意顺序要和XPath返回的元素顺序对应 - 使用
document.evaluate执行XPath查询,选择ORDERED_NODE_SNAPSHOT_TYPE可以保证按文档顺序获取元素 - 循环中取出每个元素的文本,用
trim()处理掉多余的首尾空格,避免空白字符导致断言失败 - 用
console.assert做断言,不匹配时会在控制台打印错误;如果是在测试框架(比如Cypress、Playwright)中使用,可以替换成框架自带的断言方法 - 最后通过
callback返回验证完成的状态
内容的提问来源于stack exchange,提问作者AR Rahman
相关产品推荐
相关产品推荐

