使用Watir在HTML表格中迭代和填充数据的更好方法

我有一个表,最多可包含50行,有9列。 但是我用来填写表中数据的代码需要这么长时间。

有更快的方法吗? 这是我的代码

table = $browser.div(:id => "market").table(:id => 'tableTradeIndMarket') i = 3 + rand(1..table.rows.length-4) table.rows[i].cells[4].select_list.select 'Buy' table.rows[i].cells[5].select_list.select 'Market' table.rows[i].cells[6].text_field.set ($share) table.rows[i+1].cells[4].select_list.select 'Buy' table.rows[i+1].cells[5].select_list.select 'Limit' table.rows[i+1].cells[6].text_field.set ($share) //To take out dollar sign which is found on the second column and put that value in to another column of the same row table.rows[i+1].cells[8].text_field.set( table.rows[i+1].cells[2].text[1..table.rows[i+1].cells[2].text.length] ) table.rows[i+1].cells[9].select_list.select 'Day' table.rows[i+2].cells[4].select_list.select 'Buy' table.rows[i+2].cells[5].select_list.select 'Stop' table.rows[i+2].cells[6].text_field.set ($share) table.rows[i+2].cells[7].text_field.set ( table.rows[i+2].cells[2].text[1..table.rows[i+2].cells[2].text.length]) table.rows[i+2].cells[9].select_list.select 'GTC' table.rows[i+3].cells[4].select_list.select 'Buy' table.rows[i+3].cells[5].select_list.select 'Stop/Limit' table.rows[i+3].cells[6].text_field.set ($share) table.rows[i+3].cells[7].text_field.set ( table.rows[i+3].cells[2].text[1..table.rows[i+3].cells[2].text.length]) table.rows[i+3].cells[8].text_field.set ( table.rows[i+3].cells[2].text[1..table.rows[i+3].cells[2].text.length]) table.rows[i+3].cells[9].select_list.select 'Day' 

你最好的选择是在Nokogiri的帮助下找到行元素。 ŽeljkoFilipin有一篇关于这样做的好文章 – http://zeljkofilipin.com/watir-nokogiri

例如,输入第i行将是:

 row_css = Nokogiri::HTML(browser.html).at_css("table#tableTradeIndMarket tr:nth-of-type(#{i})").css_path row = browser.element(:css, row_css).to_subtype row.cells[4].select_list.select 'Buy' row.cells[5].select_list.select 'Market' row.cells[6].text_field.set ($share) 

您可以将相同的概念应用于您输入的其他行。

这至少对我使用的测试表有帮助。