如何从Capybara的网页评论中获取一些内容?

时间:2011-10-13 14:32:02

标签: ruby capybara

在另一个问题之后,我尝试使用标题作为唯一标识符,但最终发现它们在我正在使用的网站上是非唯一的。但是,每个页面都在评论中包含唯一标识符。

使用Capybara,我如何访问网页上的评论?具体来说,在第一个html之前的根,注释。在其中,我至少可以使用capybara来抓取包含评论的元素(即使我不能抓住评论),但我似乎根本无法从根本上做到这一点。

2 个答案:

答案 0 :(得分:2)

不是最佳解决方案,但至少可以通过使用正则表达式或其他方法直接解析当前会话的“正文”来实现。

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

将为您提供一个包含页面上所有注释的数组。

答案 1 :(得分:0)

必须解决您描述的完全相同的问题,我实现了以下自定义RSpec匹配器

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应该相对容易。