我正在使用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
答案 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上说你带来印度
在你的函数下的step.rb文件中写下这一行
x = page.find(:xpath,'//*[@id="hplogo"]/div' , :visible => false).text
puts x
x将显示“India”
终端o / p