Как я могу получить что-то из комментариев на веб-странице с Capybara? - PullRequest
1 голос
/ 13 октября 2011

После другого вопроса я попытался использовать заголовки для уникальных идентификаторов, но в итоге обнаружил, что они не являются уникальными на сайте, с которым я работаю. Однако каждая страница содержит уникальный идентификатор в комментарии.

Используя Capybara, как я могу получить доступ к комментариям на веб-странице? Конкретно, комментарий в корне, ДО первого html. Внутри этого я могу, по крайней мере, использовать капибару, чтобы получить элемент, содержащий комментарий (даже если я не могу получить комментарий), но, похоже, я вообще не могу сделать это из корня.

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

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

page.source.scan(/<!--.*?-->/m)

даст вам массив, содержащий все комментарии на странице.

0 голосов
/ 25 февраля 2014

Для решения точно такой же проблемы, которую вы описываете, я реализовал следующий пользовательский RSpec Matcher

RSpec::Matchers.define :have_comment do |comment|
    match do |page|
      page.has_xpath?(".//comment()[.=' #{comment} ']")
    end
end

Может использоваться следующим образом:

page.should have_comment("the comment text you are looking for")

Вышеприведенная реализация соответствует всему телу комментария, включая пробел до и пробел после него, но его должно быть относительно легко изменить для поиска произвольного RegEx.

...