在另一个问题之后,我尝试使用标题作为唯一标识符,但最终发现它们在我正在使用的网站上是非唯一的。但是,每个页面都在评论中包含唯一标识符。
使用Capybara,我如何访问网页上的评论?具体来说,在第一个html之前的根,注释。在其中,我至少可以使用capybara来抓取包含评论的元素(即使我不能抓住评论),但我似乎根本无法从根本上做到这一点。
答案 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应该相对容易。