17

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

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

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

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

不得不从整个页面中查看 HTML 以找到我正在寻找的内容变得有点烦人:P

4

3 回答 3

10

我正在为其他登陆这里的人添加这个答案。解决方案非常简单。

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

find("table")['outerHTML']
于 2016-01-21T21:24:25.817 回答
2

我也觉得 Poltergeist 很烦人。这是我所做的:

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

这需要一个 css 选择器,并返回一个本机 nokogiri 元素,而不是 poltergeist 的白痴。您还必须这样做require 'nokogiri',但这应该不是问题,因为它是 poltergeist 的依赖项。

于 2014-01-24T20:58:01.707 回答
-1

它可以这样做

让我们在 google.co.in 上说你想获取印度

在此处输入图像描述

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

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

x 将显示“印度”

终端o/p

在此处输入图像描述

于 2014-01-25T08:35:04.997 回答