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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium Chrome webdriver Java:如何选择第n个列表项?相关的知识,希望对你有一定的参考价值。

我有以下元素:

<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个项目被选中。

你能告诉我吗?

谢谢

答案

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

listItems.get(n).click();

如下所述,两者之间存在一些实质性差异:

另一答案

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

XPath的:

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

CSS选择器:

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

以上是关于Selenium Chrome webdriver Java:如何选择第n个列表项?的主要内容,如果未能解决你的问题,请参考以下文章

当窗口在 Chrome 87 的后台时,Webdriver.io/Selenium 测试失败

Selenium.WebDriver - 当我尝试在 Chrome 中运行测试时出现错误

Python Selenium Chrome Webdriver [重复]

使用 Java 使用 Selenium WebDriver 加载 Chrome 配置文件

python selenium webdriver启动chrome浏览器的方法

将 selenium_webdriver(chrome) 的流量绑定到特定的网络接口/隧道