【发布时间】:2014-05-04 21:34:47
【问题描述】:
我有这个简单的 HTML:
<div> Test <span> someting </span></div>
如何只检索 div 的 innertext?
使用text 从 div 中检索所有文本:
[1] pry(#<SandBox>)> first(:xpath, '//div').text
=> "Test someting"
在我的 XPath 查询中使用 text() 会导致以下错误:
[2] pry(#<SandBox>)> first(:xpath, '//div/text()')
Capybara::Poltergeist::BrowserError: There was an error inside the PhantomJS portion of Poltergeist. This is probably a bug, so please report it.
TypeError: 'null' is not an object (evaluating 'window.getComputedStyle(element).display')
但是,使用与 Nokogiri 相同的 XPath 是可行的:
[3] pry(#<SandBox>)> Nokogiri::HTML(page.html).xpath('//div/text()').text
=> " Test "
有没有办法只使用水豚而不求助于Nokogiri?
【问题讨论】:
-
正如错误消息报告的那样,这很可能是一个错误。您应该将此报告给开发人员。确实没有办法使用
text(),如果这不起作用,我会认为这是一个主要错误。因此,您要么等待修复,要么使用其他解决方案,例如 Nokogiri -
我也搜过了,目前似乎没有办法获取内部HTML。我想我们将不得不等待更新或提出拉取请求。我认为至少有一个其他 Capybara 驱动程序支持 innerHTML 方法。
标签: ruby xpath capybara nokogiri poltergeist