在我的应用程序中,一个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>
答案 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-
”开头的所有元素,然后返回第二个结果。