Как нажать в навигационной панели и выбрать элемент из списка в Селене Java - PullRequest
0 голосов
/ 07 мая 2018

Я пробовал это

List <WebElement> navlist = driver.findElements(By.cssSelector("d-md-down-none nav navbar-nav mr-auto"));
navlist.get(0).findElement(By.linkText("Sources")).click();

Ниже приведен HTML-код:

<ul class="d-md-down-none nav navbar-nav mr-auto">
    <li class="px-3 nav-item">
        <a aria-disabled="false" href="#/sources" class="nav-link">Sources</a>
    </li>
    <li class="px-3 nav-item">
        <a aria-disabled="false" href="#/alerts" class="nav-link">Alerts</a>
    </li>
</ul>

Ошибка при попытке моего примера:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at Adding_new_source.New_source.main(New_source.java:53) 

Как щелкнуть в навигационной панели и выбрать элемент из списка в селене Java

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы получаете ошибку, потому что ваш селектор CSS неверен. Вы перечислили имена классов, но классам должен предшествовать ., например .className. Эквивалентом вашего кода будет

List <WebElement> navlist = driver.findElements(By.cssSelector(".d-md-down-none.nav.navbar-nav.mr-auto"));
navlist.get(0).findElement(By.linkText("Sources")).click();

Вы пробовали проще

driver.findElement(By.linkText("Sources")).click();

Может работать или не работать в зависимости от того, сколько других ссылок на «Источники» имеется на странице и где они находятся.

0 голосов
/ 07 мая 2018

В соответствии с предоставленным вами HTML-кодом и пробными кодами вы можете выбрать и щелкнуть элемент с текстом как Источники из списка , используя следующий блок кода:

List <WebElement> navlist = driver.findElements(By.cssSelector("ul.d-md-down-none.nav.navbar-nav.mr-auto li>a"));
for(WebElement elem:navlist)
    if(elem.getAttribute("innerHTML").contains("Sources"))
        {
            elem.click();
            break;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...