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

Я пытаюсь получить все тексты из определенного селектора CSS, которые неоднозначны в HTML. Я хотел бы получить доступ к этим неоднозначным CSS и получить текст, а затем вернуть всю эту информацию.

Я выяснил, как найти все неоднозначные селекторы, но я не знаю, как получить только текст от каждого селектора.

Неоднозначный селектор (он находит 3 совпадения) .list-card-title .js-card-name

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

arr = Array(3) arr = find_all('.list-card-title.js-card-name').to_a puts arr.to_s

Когда я использую puts arr

Я получил следующий вывод [#<Capybara::Node::Element tag="span" path="/HTML/BODY[1]/DIV[2]/DIV[2]/DIV[1]/DIV[2]/DIV[3]/DIV[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]/DIV[1]/DIV[2]/A[1]/DIV[3]/SPAN[1]">, #<Capybara::Node::Element tag="span" path="/HTML/BODY[1]/DIV[2]/DIV[2]/DIV[1]/DIV[2]/DIV[3]/DIV[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]/DIV[1]/DIV[2]/A[2]/DIV[3]/SPAN[1]">, #<Capybara::Node::Element tag="span" path="/HTML/BODY[1]/DIV[2]/DIV[2]/DIV[1]/DIV[2]/DIV[3]/DIV[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]/DIV[1]/DIV[2]/A[3]/DIV[3]/SPAN[1]">]

1 Ответ

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

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

find_all('.list-card-title.js-card-name').map(&:text)

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

find_all('.list-card-title.js-card-name').map(&:text).join

Примечание: вы пометили свои вопросы automated-tests, вы на самом деле тестируете приложение / сайт или вместо этого вы просматриваете веб-страницы? Если вы тестируете, вам гораздо лучше писать свои тесты, используя методы ожидания / утверждения Capybaras (и принимаемые ими параметры: text), а не находить элементы, извлекать / манипулировать содержащимся текстом и затем делать что-то (я предполагаю, что утверждение) с что.

...