如何用XPath定位含generatedName的表格行对应的Options按钮?
解决方案
你当前定位按钮的选择器写法不符合WebdriverIO的语法规则,改用XPath可以精准定位目标行内的Options按钮,以下是两种可行方案:
方案1:基于已定位的行元素查找按钮
保留先定位目标行的逻辑,在该行内使用相对XPath查找按钮:
const rowElement2 = await browser.$(`//tr[td//text()[contains(., '${generatedName}')]]`); await rowElement2.waitForDisplayed(); // 相对XPath:从当前行节点开始,查找title为Options的元素 const buttonElement2 = await rowElement2.$('.//*[@title="Options"]'); await buttonElement2.waitForDisplayed(); await buttonElement2.click();
.//表示从当前rowElement2的节点开始向下查找,避免全局搜索*匹配任意标签元素,若按钮有固定标签(如button/a),可替换为具体标签名(如.//button[@title="Options"])提升精准度
方案2:一步定位按钮(更简洁)
直接用完整XPath一次性定位目标行内的Options按钮,省去单独定位行的步骤:
const buttonElement2 = await browser.$(`//tr[td//text()[contains(., '${generatedName}')]]//*[@title="Options"]`); await buttonElement2.waitForDisplayed(); await buttonElement2.click();
注意事项
- 确认
generatedName的文本无多余空格/特殊字符,避免contains()匹配失败 - 若按钮的
title属性值存在大小写差异,可改用contains(@title, 'Options')适配(需根据实际情况调整)
内容的提问来源于stack exchange,提问作者Dmitrii Shchukin
相关产品推荐
相关产品推荐

