如何基于'Amber'与'2'两个值编写XPath定位对应input元素
你原来的XPath写法存在逻辑错误:[text() = "Amber" and text() = "2"]要求同一个<span>元素同时包含两个完全不同的文本值,而实际场景中2和Amber分别在同一表格行<tr>下的两个不同<td>的子<span>中,永远无法匹配到结果。
正确的思路是先定位同时满足两个文本条件的目标行<tr>,再从行内向下查找你需要的input元素,以下是不同目标input的对应写法:
1. 定位行首的批量选择复选框
//tbody/tr[td/span/span[text()='2'] and td/span/span[text()='Amber']]/td[1]//input[@data-table-row-checkbox='true']
2. 定位价格输入框
//tbody/tr[td/span/span[text()='2'] and td/span/span[text()='Amber']]//input[@name='price-input']
3. 定位行尾的启用状态开关复选框
//tbody/tr[td/span/span[text()='2'] and td/span/span[text()='Amber']]//input[@class='switch-checkbox']
如果文本前后存在空格导致匹配失败,可以用normalize-space()方法消除空格干扰,优化后的写法示例:
//tbody/tr[td/span/span[normalize-space(text())='2'] and td/span/span[normalize-space(text())='Amber']]//input[@name='price-input']
内容的提问来源于stack exchange,提问作者Hari Kishan Agrawal
相关产品推荐
相关产品推荐

