如何获得动态变化的XPATH的AJAX元素

时间:2014-04-17 05:03:59

标签: ajax selenium xpath

在我的应用程序中,一个AJAX文件显示了一些值

当我试图找出他们的XPATH时,它是动态变化的

例如:

我第一次尝试找出路径.//*[@id='ix-rt-13']。刷新页面时,它会将其设为.//*[@id='ix-rt-6']

实际上,它显示2个值为.//*[@id='ix-rt-13']的值,第二个值为.//*[@id='ix-rt-14']。当我刷新页面时,XPath值为.//*[@id='ix-rt-6'].//*[@id='ix-rt-7']

我想检索第二个元素文本。怎么做?

<li class="ui-menu-item" role="presentation">
<a id="'ix-rt-15" class="ui-corner-all ui-state-focus" tabindex="-1">Being Powerful</a>
</li>

2 个答案:

答案 0 :(得分:1)

如果链接文本没有更改,则不应使用xpath而是使用链接文本:

driver.findElement(By.linkText("Being Powerful")).click();

但是,如果您使用xpath,可以尝试以下操作:

driver.findElement(By.xpath("//a[contains(@id,'ix-rt-')]")).click();

但是这会在其id中选择包含'ix-rt-'的第一个元素。因此,如果有超过1个这样的元素,它可能无法正常工作。在这种情况下,如果您知道页面上的元素索引,则可以使用以下命令:

driver.findElement(By.xpath("(//a[contains(@id,'ix-rt-')])[2]")).click();

答案 1 :(得分:1)

如果我理解正确,你可以试试这个XPath:

(//*[starts-with(@id,'ix-rt-')])[2]

上面的XPath将搜索id属性值以“ix-rt-”开头的所有元素,然后返回第二个结果。