找不到可点击元素的唯一xpath

时间:2019-07-17 01:56:29

标签: selenium xpath chropath

我正在尝试获取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?谢谢

2 个答案:

答案 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,您需要定义已知的和未知的。查看一个样本文档并不会告诉您。