Капибара / Рубин - Попытка получить текст из невидимого элемента, а затем преобразовать его в строку - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь получить конкретное текстовое значение из селектора CSS, который принадлежит невидимому элементу. После этого я хотел бы преобразовать текст (из элемента) в строку, чтобы позже использовать метод среза.

Невидимый элемент, который я выяснил, как найти, однако я не нахожу способ получить текст и затем преобразовать его в строку.

Текст, который я хочу получить, находится на p ниже (в случае, 3 cartões)

<p class="list-header-num-cards hide js-num-cards">3 cartões</p>

-

Селектор CSS <#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p

Я уже пробовал такие команды, как:

var = find('#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p', visible: false).value

var = find('#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p', visible: false).text

Однако переменная var не получает Text valeu и тест проходит успешно.

Я пытаюсь использовать puts var на выходе ничего нет

1 Ответ

1 голос
/ 20 апреля 2019

По умолчанию метод text возвращает только видимый текст, поскольку при тестировании приложения / сайта вам действительно нужно беспокоиться только о том, что может увидеть пользователь. Чтобы получить невидимый текст, вы можете передать :all текстовому методу

find('#board > div:nth-child(1) > div.list.js-list-content > div.list-header.js-list-header.u-clearfix.is-menu-shown > p', visible: false).text(:all)

https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#text-instance_method

Также обратите внимание, что использование таких селекторов CSS, как вы, приведет к очень хрупким тестам. Являются ли все классы и части типа элементов селектора действительно необходимыми или что-то более простое, как #board > :nth-child(1) .list-header p, тоже будет работать? Даже это, вероятно, более конкретно, чем нужно, но не видя реального HTML, сложно сказать, что будет лучше.

...