如何在使用Poltergeist时获取元素的HTML?

时间:2013-11-13 12:02:57

标签: ruby capybara poltergeist

我正在使用Capybara和Poltergeist司机。我的问题是:如何获取节点的HTML(字符串)?

我读过使用RackTest驱动程序你可以这样得到它:

find("table").native         #=> native Nokogiri element
find("table").native.to_html #=> "..."

但是使用Poltergeist在节点上调用#native会返回Capybara::Poltergeist::Node,而不是本机Nokogiri元素。然后再次在#native上调用Capybara::Poltergeist::Node会再次返回相同的Capybara::Poltergeist::Node(也就是说,它会返回self)。

从整个页面查看HTML以查找我正在寻找的内容已经变得有些恼人:P

3 个答案:

答案 0 :(得分:9)

我正在为在这里降落的其他人添加这个答案。解决方案很简单。

按照您提供的示例,它将是:

find("table")['outerHTML']

答案 1 :(得分:2)

我也觉得Poltergeist很恼火。这是我做的:

def nokogiri(selector)
    nokogiri = Nokogiri::HTML(page.html);
    return nokogiri.css(selector)[0]
end

这需要一个css选择器,并返回一个原生的nokogiri元素,而不是poltergeist的白痴。你还必须require 'nokogiri',但它不应该是一个问题,因为它是一个依赖于恶作剧者。

答案 2 :(得分:-1)

可以这样做

让我们在google.co.in上说你带来印度

enter image description here

在你的函数下的step.rb文件中写下这一行

x =  page.find(:xpath,'//*[@id="hplogo"]/div' , :visible => false).text
puts x  

x将显示“India”

终端o / p

enter image description here