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

Selenium Chrome webdriver Java:如何选择第n个列表项?,selenium,selenium-webdriver,selenium-chromedriver,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>

我有以下内容:

<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>
然后:

ArrayList<WebElement> listItems = new ArrayList<>(days_tabs.findElements(By.tagName("li")));
我没有看到第n项被选中

你能给个建议吗


谢谢

您可能需要通过selenium API而不是JavaScript执行实际的单击操作:

listItems.get(n).click();
如下文所述,两者之间存在一些实质性差异:


如果不尝试访问所有
  • 元素,可以直接使用第n个元素的选择器

    XPath:

    WebElement-ntheelement=driver.findElement(By.xpath(“ol[@class='day-tabs']]]/li[n]”);
    n元素。单击();
    
    CSS选择器:

    WebElement-ntheelement=driver.findElement(By.cssSelector(“ol.day-tabs>li:n类型)”);
    n元素。单击();
    
    为什么在
    XPath
    标题下有一个
    cssSelector
    ?您的XPath缺少开头的
    /
    <代码>ol[日选项卡]应该是CSS选择器中的
    ol.day选项卡
    。另外,这两种方法都不起作用,因为您将“n”作为字符串,而不是传入变量
    n
    。我已经修复了代码。当我试图格式化代码时犯了一个错误,然后我在编辑器中把它弄混了。如果你试图自动化一个用户场景,你应该(通常)更喜欢Selenium click而不是JSE click,因为JSE可以单击用户不喜欢的各种不可见元素,等等。
        JavascriptExecutor ex = (JavascriptExecutor)chromeWebDriver;
        ex.executeScript("arguments[0].click();", listItems.get(n));
    
    listItems.get(n).click();