[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

How to get html table value efficiently into an array

mirthcyy

2/18/2008 9:33:00 PM

hi guys,

I have a table in html and I'm using watir rudy to read values from
that table and put into an array. Right now I'm doing like that:

frame.table(:id, "SomeTable").rows.each_with_index{|r, i|

totalcells=r.cells.length
j=1
while j<=totalcells do
$arrayResult.push(r.cell(:index,j).text)
j=j+1
end
}

But it's really slow. Is there any better way to do the cell loop and
is there any better way to save the cell values to an array instead of
push? Thanks a lot.
2 Answers

mirthcyy

2/18/2008 10:05:00 PM

0

Just found out all I need to do is

$arrayResult=frame.table(:id, "SomeTable").to_a.flatten

On 2?18?, ??3?32?, mirth...@gmail.com wrote:
> hi guys,
>
> I have a table in html and I'm using watir rudy to read values from
> that table and put into an array. Right now I'm doing like that:
>
> frame.table(:id, "SomeTable").rows.each_with_index{|r, i|
>
> totalcells=r.cells.length
> j=1
> while j<=totalcells do
> $arrayResult.push(r.cell(:index,j).text)
> j=j+1
> end
> }
>
> But it's really slow. Is there any better way to do the cell loop and
> is there any better way to save the cell values to an array instead of
> push? Thanks a lot.

Phlip

2/18/2008 11:51:00 PM

0

mirthcyy@gmail.com wrote:

> I have a table in html and I'm using watir rudy to read values from
> that table and put into an array. Right now I'm doing like that:
>
> frame.table(:id, "SomeTable").rows.each_with_index{|r, i|
....
> $arrayResult.push(r.cell(:index,j).text)
....
> }
>
> But it's really slow.

That's because the r.cell is a complete ActiveX hit, which is expensive at this
resolution.

The fix is to use a method like table.inner_html to read the whole table into
memory. Then use REXML and XPath to scan the table. These operations all use
strings in memory, without ActiveX or IE in the loop, so they will be much faster.

(New question: Architecturally, why are you abusing Watir like this? It's for
spot-checking your output...)

--
Phlip
http://assert2.ruby...