Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Получить текст невидимого элемента с помощью javascript


(Natalja Librante Lace) #1

Добрый день!
Работаю Selenium 2+Thucydides+Java

Есть список счетов размером 25+ записей. Из них на экране отображаются первые 5 счетов, остальные надо скролить. Проблема получить текст невидимых на экране счетов (getAttribute(“value”) возвращает только видимые счета). После некоторого копания нашла решение:

 for (WebElement account:accounts) {
            String accountInfo = (String)evaluateJavascript("arguments[0].innerText", account);
            System.out.println("source " + accountInfo);

Однако на выходе получаю для всех 25 счетов:
source null
source null
source null

использование arguments[0].innerHTML дает такой же результат

сам HTML выглядит так:

<div class="jqSelectWrapper" style="z-index: 10; width: 350px;">
<div class="jqSelectInner">
<div style="top: 20px; position: absolute;">
<div class="slimScrollDiv" style="position: relative; overflow: hidden; width: 348px; height: 150px; display: block;">
<li>
<a class="selected" index="0" href="#">Счет1 0.00</a>
</li>
<li>
<a index="1" href="#">Счет2  15.50</a>
</li>

в тегах <>li<> <>/li<> информация об аккаунтах, которую мне необходимо получить в виде строки для дальнейшей работы (например, Счет1 0.00 и т.д. все 25 счетов)

В javascript совсем не сильна - по сути своей сталкиваюсь с ним второй раз в жизни…


(vmaximv) #2

Попробуйте return поставить:

String accountInfo = (String)evaluateJavascript("return arguments[0].innerText", account);

(Natalja Librante Lace) #3

Тот же результат:
source null
source null


(vmaximv) #4

А браузер какой? В ФФ нету атрибута innerText - там textContent.
Можете попробовать выводить outerHTML - он точно пустым быть не может, там и будет видно где косяк.


(Natalja Librante Lace) #5

Браузер ФФ, но тестироваться будет страница еще в IE и Chrome
textContent - сработал!

Попробовала String accountInfo = (String)evaluateJavascript("return arguments[0].innerHTML", account);

возвращает

source <a href="#" index="24">Счет24&nbsp;&nbsp;&nbsp;  0.00</a>

А innerHTML будет работать во всех браузерах?


(vmaximv) #6

Да.


(Natalja Librante Lace) #7

Спасибо!!!