t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

selenide
webdriver
java
Теги: #<Tag:0x00007f21d907b168> #<Tag:0x00007f21d907af88> #<Tag:0x00007f21d907acb8>

(Яна Телегина) #1
<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>

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


(Viktor) #2

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


(Яна Телегина) #3

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


(Viktor) #4

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


(Яна Телегина) #5

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

  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 … и т.д.


(Viktor) #6

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


(Яна Телегина) #7

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


(Viktor) #8

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

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

(Sergey Rybakin) #9

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

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


(Viktor) #10

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