Как правильно узнать какая страница выбрана пользователем

<ul class="k-pager-numbers k-reset">
<li class="k-current-page"><span class="k-link k-pager-nav">1</span></li>
<li><span class="k-state-selected">1</span></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="2">2</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="3">3</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="4">4</a></li><li><a tabindex="-1" href="#" class="k-link" data-page="5">5</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="6">6</a>
</li><li><a tabindex="-1" href="#" class="k-link" data-page="7">7</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="8">8</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="9">9</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="10">10</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="11" title="More pages">...</a></li>
</ul>

Пример кода страницы когда пользователем выбрана первая страница , соответственно если выбрана вторая код страницы будет следующий :

<ul class="k-pager-numbers k-reset">
<li><a tabindex="-1" href="#" class="k-link" data-page="1">1</a></li>
<li class="k-current-page"><span class="k-link k-pager-nav">2</span></li>
<li><span class="k-state-selected">2</span></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="3">3</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="4">4</a></li><li><a tabindex="-1" href="#" class="k-link" data-page="5">5</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="6">6</a>
</li><li><a tabindex="-1" href="#" class="k-link" data-page="7">7</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="8">8</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="9">9</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="10">10</a></li>
<li><a tabindex="-1" href="#" class="k-link" data-page="11" title="More pages">...</a></li>
</ul>

каким образом в тесте мне узнать какая страница выбрана в данный момент ?

возьмите значение атрибута value .GetAttribute(“value”) у этого элемента <ul class="k-pager-numbers k-reset"> по идее если страница 2 должно вернуть 2

то есть даже не атрибут у <li class=“k-current-page”> ?
просто я не вижу атрибутов у <ul class="k-pager-numbers k-reset">

да верно или текст, но у конкретно ul

Пробую вот так :

  WebElement element = webDriver.findElement(By.xpath(".//div[@class ='k-content k-state-active']" +
                "//child::ul[@class = 'k-pager-numbers k-reset']"));
        System.out.println("Значение элемента - " + element.getAttribute("value"));
        System.out.println("Текущая страница - "+element.getText());
        return evilElement.getText().trim();

в первом случае - null
во втором вывел по очереди все номера страниц 1 2 3 4 … и т.д.

//child::ul[@class = ‘k-pager-numbers k-reset’]
замените на
//ul[@class = ‘k-pager-numbers k-reset’]

неа, все осталось так же

Так у вас же отмечено что выбрано, просто возьмите текст у айтема с классом k-state-selected

<li><span class="k-state-selected">1</span></li>

так как ветка Selenide, то попробуйте:
$$(".k-pager-numbers").filter(byCssSelector(".k-state-selected")).getValue();

Вообще, Selenide имеет мощнейший инструментарий SelenideCollection для “разборок” всяких таблиц, коллекций и пр. И совсем не обязательно длиннющие локаторы городить.

на большой таблице или коллекции, перфоманс просядет, но для мелочи подойдет

1 Like