Как я читаю текст от не видимые элементы с Watir (Рубин)?

Есть отделение на странице, которая не видима, но имеет некоторую стоимость, которую я хочу захватить. Запрос текста на нем возвращает меня пустая строка.

Как я показывал стоимость, не имея необходимость иметь дело с сырым HTML? Я могу вынудить .text возвратить меня фактическое значение независимо от видимости текста в браузере?

irb(main):1341:0> d.first.visible?
=> false

irb(main):1344:0> d.first.html
=> "<div class=\"day\">7</div>"

irb(main):1345:0> d.first.text
=> ""

PS: есть много многие отделения (страница прячет ответ про запас, и покажите их соответственно). Я полагал, что изменение всего display:none на странице или нажатии сделало их видимыми, но я предпочту избегать этого, если это возможно. Если бы не возможный решение с изменением всего показа ни один не был бы предпочтительной работой вокруг.

PPS: Проклятый, я пытался перегрузить видимое? метод в Watir:: класс Элемента, чтобы всегда возвратиться верный, но это не добивалось цели.

irb(main):1502:0> d.first.visible?
=> true

irb(main):1504:0> d.first.text
=> ""
4
nl ja de
Вы используете watir-классика, watir-webdriver или обоих? В то время как поведение - то же самое в обоих драгоценных камнях, я думаю, что работа отличалась бы.
добавлено автор Justin Ko, источник
Что относительно того, чтобы разобрать тот HTML?
добавлено автор A.D., источник
@Jeremy, который я согласовываю, возможно @ŽeljkoFilipin, будет знать больше.. Regex? stackoverflow.com/q/1732348/1136008 Использование f.e. Nokogiri: стоимость = Nokogiri:: HTML (" <класс отделения = \"день \"> 7 </ отделение>") .text # => "7"
добавлено автор A.D., источник
драгоценный камень ' watir webdriver\U 0026\\U 0023\39; использование Firefox
добавлено автор Jeremy, источник
That' s, что я делаю только that' s не исправляют, чтобы распространить знание синтаксиса HTML пользователю этого драгоценного камня. Не говоря уже об усилиях по обслуживанию с regex. У lib должно действительно быть что-то как innerHtml, который не должен заботиться о видимом или нет, так как я могу подвергнуть сомнению что сам. Функция текста/стоимости обладает некоторым дополнительным встроенным интеллектом, который не должен быть там.
добавлено автор Jeremy, источник
Спасибо за предложение! Каждый раз я использую regex, я заканчиваю с 2 проблемами:)
добавлено автор Jeremy, источник

2 ответы

Я думаю, что необходимо использовать JavaScript, чтобы получить это.

e = d.first
browser.execute_script('return arguments[0].textContent', e)
#=> "7"

Обратите внимание, что это только работало бы на подобные Mozilla браузеры. Для подобных Т.Е. браузеров необходимо было бы использовать innerText . Хотя, если бы вы используете watir-классика, это просто было бы d.first.innerText (т.е. никакой execute_script требуемый).

Используя attribute_value:

Оказывается, что можно сделать его более простым при помощи attribute_value метод. Кажется, что это может получить те же самые значения атрибута как JavaScript.

d.first.attribute_value('textContent')
#=> "7"

Используя inner_html

Если элемент только включает текстовые узлы (т.е. никакие элементы), можно также использовать inner_html :

d.first.inner_html
#=> "7"
7
добавлено
Если необходимо часто делать это, вы могли бы всегда добавлять его как метод к классу Элемента.
добавлено автор Justin Ko, источник
Умная работа вокруг! Спасибо Джастин. Это добилось цели действительно. It' s довольно многословный, но работы. Спасибо. I' ll принимают ответ, если никто не придумывает более умный ответ, но вы получили мои +1 наверняка! Большое спасибо.
добавлено автор Jeremy, источник

Попытайтесь использовать execute_script , метод действительно изменяет ценность "видимых" к видимому. У чего-то как document.getElementById ('id') .style.visibility = 'видимый' принятие его есть ID. Если это не делает можно всегда просить, чтобы devs поместил испытательный id на элемент (или просто сделал это сами).

0
добавлено
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков