【问题标题】:DOM navigation model? (Capybara/Nokogiri)DOM 导航模型? (水豚/Nokogiri)
【发布时间】:2012-03-27 23:14:08
【问题描述】:

在我开始重新发明轮子之前,是否有任何现有的 gem 支持使用 Capybara/Nokogiri 的 JavaScript 样式 DOM 导航?我正在考虑将整个页面解析为对象以允许这样做:

my_table = page.tables[0]
my_row = my_table.row[3]
my_cell = my_row.cell[2]
my_cell.text.should == "hello world"

(我正在寻找一个 Ruby 解决方案,而不是一些 JavaScript 的包装器)。

【问题讨论】:

    标签: ruby nokogiri capybara


    【解决方案1】:

    这对你有用吗?这是标准的Nokogiri

    my_table = page.css('table')[0] # or page.at_css('table')
    my_row = my_table.css('tr')[3] # or my_table.at_xpath('tr[position()=4]')
    my_cell = my_row.css('td,th')[2]
    my_cell.text.should == "hello world"
    

    你可以给 Nokogiri 打猴子补丁,把它完全交给你,但这对我来说并不好看。

    class Nokogiri::XML::Node
      def tables
        css('table')
      end
    
      def rows
        css('tr')
      end
    
      def cells
        css('th,td')
      end
    end
    
    my_table = page.tables[0]
    my_row = my_table.rows[3]
    my_cell = my_row.cells[2]
    my_cell.text.should == "hello world"
    

    另一个不好的选择是 slop 装饰器,详细 at the bottom of this page

    还可以查看 Rails 指南中的 Testing Views

    【讨论】:

    • 是的,这将部分实现我的需要,并且与我正在考虑构建的内容一致,只是使用了更多基于对象的树,我可以在其中添加特定的其他方法特定的元素类型。
    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多