<ul class="drillDownMenu l_drillDown" style="left: -498px;">
<li class="hasSubs">
<a id="RAL10" href="javascript:;">
<ul class="active">
<li class="hasSubs">
<li class="hasSubs">
<a id="AL101117" href="javascript:;">AR Invoices</a>
<ul class="displayed active">
<li>
<a id="FAL10111726" onclick="LoadQueryWindow(this,'104')">AR Invoices</a>
</li>
<li>
<a id="FAL10111727" onclick="LoadQueryWindow(this,'134')">All AR Invoices 1</a>
</li>
</ul>
</li>
我正在尝试使用以下驱动程序语句
driver.findElement(By.xpath("//*[contains(@id,'FAL10111727')]")).click();
但是这会选择第一个元素,我想选择列表中的最后一个元素。
谢谢
答案 0 :(得分:0)
试试这个xpath表达式:
(//ul[ @class='drillDownMenu l_drillDown']//li)[last()]
它选择所有li
元素作为最顶层ul
的子元素,然后从整个集合中选择最后一个元素。
答案 1 :(得分:0)
根据您分享的HTML,
要选择每次运行动态变化的最后'li'
, All AR Invoices 1
,在这种情况下,您可以使用:
driver.findElement(By.xpath("//ul[@class='displayed active']//following::li[last()]")).click();
但是,我认为<li>
代码不会收到点击,您必须在内部click()
代码上调用<a>
方法,而不是如下:
driver.findElement(By.xpath("//ul[@class='displayed active']//following::li[last()]/a")).click();
答案 2 :(得分:0)
//我尝试使用这个有效的
driver.findElement(By.cssSelector(“ul.displayed li:last-child a”))。click();