Ruby 如何在Capybara中获取DOM元素的HTML?

Ruby 如何在Capybara中获取DOM元素的HTML?,ruby,selenium-webdriver,capybara,inspect,Ruby,Selenium Webdriver,Capybara,Inspect,我想使用irb调试/开发代码: irb> require "capybara" irb> include Capybara::DSL irb> Capybara.current_driver = :selenium irb> visit "http://example.com" 但是我如何获得我找到的元素的HTML呢 irb> s = find(".user-pane") => #<Capybara::Element tag="nav"> irb

我想使用irb调试/开发代码:

irb> require "capybara"
irb> include Capybara::DSL
irb> Capybara.current_driver = :selenium
irb> visit "http://example.com"
但是我如何获得我找到的元素的HTML呢

irb> s = find(".user-pane")
=> #<Capybara::Element tag="nav">
irb> s.native.inner_html
NoMethodError: undefined method `inner_html' for #<Selenium::WebDriver::Element:0x007fc1da191b28>

我在SO和其他地方找到的解决方案不起作用:

  • 为什么
    .inner\u html
    不再工作了?
    因为
    .native
    现在是WebDriver,而不是Nokogiri对象
  • 为什么
    .native.get\u属性不起作用?
    因为该方法的名称与Python不同
因此答案是:
s.native.attribute('outerHTML')


但即使是在google.com页面上,也要花费近5秒的时间才能完成。

我的水豚
查找('#name')。native
返回type
Nokogiri::XML::Element
,它有一个
to_html
方法(除其他方法外)。如果这就是
native
为您返回的内容,那么
s.native.to_html
应该为您提供html。

您是否可以提供一个可以访问的通用域,并具有
。用户窗格
?你有没有试过
find('user-pane
)?@Bala,可在google.com和find(#hplogo)上复制啊哈,明白了。+1用于分享仅供参考这对水豚和恶灵不起作用。page.find(…).native返回Capybara::Poltergeist::Node,它没有一个“attribute”方法用于Capybara w/Poltergeist,您可以使用
s['outerHTML']
,这将起作用。例如:
find('some#u按钮')['outerHTML']
capybara (2.4.4)
nokogiri (1.5.6)
selenium-webdriver (2.43.0)