如何选择最后一个' li'这对于' Ul'中的每次运行都是动态变化的。使用硒驱动

时间:2017-11-23 04:47:27

标签: javascript java selenium selenium-webdriver selenium-chromedriver

<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();

但是这会选择第一个元素,我想选择列表中的最后一个元素。

谢谢

3 个答案:

答案 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();