我正在尝试获取xpath,因此我可以根据以下href单击链接:
<div id="viewIFL" style="">
<div class="moneycentrallink">
Track your cash in one place with
<a href="/abc1/1/7979879yih9y9haidhyhw9y989y9/goto/feature/icflink?navigator=2" target="_top" xpath="2">Money Central</a>
</div>
</div>
当我在ChroPath中使用以下内容时:
//a[contains(text(),'Money Central')]
它返回2个与xpath =“ 1”和xpath =“ 2”匹配的元素。
然后我尝试:
//a[contains(text(),'Money Central') and @xpath='2']
,最初它解析为找到的1个元素,但是当我再次尝试搜索时,它返回了找到的0个元素。同样,这也不通过Selenium起作用(返回无法找到元素)。
有什么想法吗?如何找到可点击元素的唯一xpath?谢谢
答案 0 :(得分:1)
请勿在您的xpath中使用xpath属性,因为ChroPath在元素中添加了xpath属性,以告诉用户该元素与发生的情况相匹配。例如-如果ChroPath添加了xpath = 5,即此元素是对应xpath的第5个元素。 对于您的方案,请检查该元素,并查看ChroPath提供了相对的xpath。 您也可以尝试// div [contains(text(),'Track your cash')] // a [contains(text(),'Money Central')]
答案 1 :(得分:0)
您的问题表达得不好。
始终存在指向*[1]/*[4]/*[1]/*[2]
形式的元素的唯一路径。问题在于该路径不是很有用,因为只有在您完全知道文档中的内容时,它才有效;如果您完全知道文档中的内容,则不需要XPath来找到它。
因此,您实际上正在寻找一种XPath,该XPath可以在一组可能的文档中工作,这些文档中的某些部分是已知的(固定的)而其他部分是未知的(可变的)。为了找到适用于该集合中每个文档的XPath,您需要定义已知的和未知的。查看一个样本文档并不会告诉您。