Selenium Chrome webdriver Java:如何选择第n个列表项?

时间:2019-05-01 17:24:15

标签: selenium selenium-webdriver selenium-chromedriver

我有以下内容:

<ol class="day-tabs">
    <li class="current"><a href="date1.html">a</a></li>
    <li class=""><a href="date2.html">b</a></li>
    <li class=""><a href="date3.html">c</a></li>
</ol>

您可能会看到,只有第一个列表项具有类定义。 我需要转到列表中的第n个项目。

所以这不是问题:

WebElement days_tabs = chromeWebDriver.findElement(By.className("day-tabs"));

然后:

ArrayList<WebElement> listItems = new ArrayList<>(days_tabs.findElements(By.tagName("li")));

但是当我尝试

    JavascriptExecutor ex = (JavascriptExecutor)chromeWebDriver;
    ex.executeScript("arguments[0].click();", listItems.get(n));

我没有看到选择第n个项目。

你能建议吗?

谢谢

2 个答案:

答案 0 :(得分:2)

您可能需要通过硒API而不是通过JavaScript进行实际点击

listItems.get(n).click();

此处概述了两者之间的实质性差异:

答案 1 :(得分:0)

如果您不尝试访问所有<li>元素,则可以直接将选择器用于第n个元素。

XPath:

WebElement nthElement = driver.findElement(By.xpath("ol[@class='day-tabs']/li[n]"));
nthElement.click();

CSS SElector:

WebElement nthElement = driver.findElement(By.cssSelector("ol.day-tabs > li:nth-of-type(n)"));
nthElement.click();