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

标签 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> s.native.inner_html
NoMethodError: undefined method `inner_html' for #<Selenium::WebDriver::Element:0x007fc1da191b28>

gem list

capybara (2.4.4)
nokogiri (1.5.6)
selenium-webdriver (2.43.0)

最佳答案

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

  • 为什么 .inner_html 不再有效?
    因为 .native 现在是 WebDriver,而不是 Nokogiri 对象。
  • 为什么 .native.get_attribute 不起作用?
    因为该方法的名称与 Python 不同。

所以答案是:s.native.attribute('outerHTML')
但即使在 google.com 页面上也需要将近 5 秒才能完成。

关于ruby - 如何在 Capybara 中获取 DOM 元素的 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588040/

相关文章:

python - 在 VS Code 中使用 Selenium 时无法解析导入 "webdriver_manager.chrome"

php - Selenium 不适用于 Firefox 57 on php

javascript - Assets 未出现在开发环境中

ruby-on-rails - Ruby 中的 Mechanize 和 SSLError

java - 构建我的 Selenium 测试

rspec - Capybara 无法通过 id 找到元素

ruby - capybara rspec 脚本未在描述 block 中执行

ruby-on-rails - Capybara 的 save_and_open_page 带有样式表和 javascript 的绝对路径

ruby-on-rails - `method_missing' : ActionMailer::Base:Class 的未定义方法 `add_delivery_method'

ruby-on-rails - RubyMine 错误 : Unable to run gem 'rails' . 找不到 'rails'