2012-03-25 7 views
0

Bevor ich anfange, das Rad neu zu erfinden, gibt es irgendwelche vorhandenen Edelsteine, die DOM-Navigation im JavaScript-Stil mit Capybara/Nokogiri unterstützen? Ich denke an etwas, das die ganze Seite in Objekte zerlegt dies ermöglichen:DOM Navigationsmodell? (Capybara/Nokogiri)

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

(Ich suche eine Ruby-Lösung eher als ein Wrapper um einige JavaScript).

Antwort

1

Würde dies für Sie arbeiten? Es ist Standard 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" 

Sie könnten Nokogiri monkeypatch es genau zu Ihnen zu geben, aber das sieht nicht schön für mich.

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" 

Eine weitere schlechte Option ist die Slop Dekorateur, detaillierte at the bottom of this page.

Überprüfen Sie auch Testing Views in den Rails-Anleitungen.

+0

Ja, das würde teilweise erreichen, was ich brauche, und ist in der Linie von dem, was ich denke zu bauen, nur mit einem eher objektbasierten Baum, wo ich zusätzliche Methoden spezifische einen bestimmten Elementtypen hinzufügen kann. –