我编写了一个 xpath 来使用 selenium c# 从网页中抓取元素。
这是 XPath
tbody/tr[@backcolor]/td/b/a[contains(text(),"match text")]
这工作正常,直到我发现重复的match text
. 所以,在一个网页上,我有两个元素match text
一个与match text
另一个与match text 9000
现在,我只需要执行 click for match text
。所以,我写了以下 XPath
table/tbody/tr[@bgcolor]/td/b/a[text()=" match text"]
请注意,匹配文本在网页上具有前导空格。上面的 Xpath 没有用。我已经用Fire Path
Firefox 的扩展检查了这个。
谁能给我推荐一个 Xpath,它可以找到与match text
. 假设匹配文本可以包含任意数量的前导空格。
我也尝试过使用,normalize-space()
但也没有用。这是我尝试过的
text()[normalize-space(.)='match']
我发现了一些关于 SO 的问题,但没有帮助。
感谢你的帮助。
更新:
感谢您的回答,但没有一个对我有用。
我也提到了这两个字符串
- 匹配文本
- 匹配文本 9000
在我的代码中,我将在 foreach 循环中迭代它们。所以,我不能保证我会得到 9000 作为第二个元素。
我已经尝试了使用 Firefox 的 FirePath 扩展提到的所有答案,但网页上没有选择任何内容。
如前所述,我在匹配文本之前有前导空格。
HTML:(匹配 xpath)
<html>
<body>
<table>
<tbody>
<tr><td><b><a class="s7intext" href="#"> match text</a></b></td></tr>
<tr><td><b><a class="s7intext" href="#"> match text random</a></b></td></tr>
</tbody>
</table>
</body>
</html>
这是我页面中的 HTML,其中包含
字符。前面有两个
字符和一个额外的空格match text
。我正在抓取元素的站点是客户端站点。我不能说他修改他的 HTML 就可以了。