Веб-драйвер Selenium Chrome Java: Как выбрать n-й элемент списка? - PullRequest
1 голос
/ 01 мая 2019

У меня есть следующий элемент:

<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 ]

2 голосов
/ 01 мая 2019

Вам может потребоваться сделать фактический клик с помощью API селена , а не с помощью JavaScript:

listItems.get(n).click();

Между этими двумя факторами есть существенные различия, как указано здесь:

0 голосов
/ 01 мая 2019

Если вы не пытаетесь получить доступ ко всем элементам <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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...