That bug is captured in: http://jira.openqa.org/browse/WTR-486

And fixed in commit: 
https://github.com/bret/watir/commit/3846b6f300f5210df6b196eeeb15684b6e25378b
You should see it in the next patch release.

There is another discussion post about it titled "watir 2.0.1 table rows method 
broken" that has a workaround.


On 2011-08-31, at 3:02 PM, brettsykes wrote:

> Ruby Version: 1.8.7
> WATIR Version: 2.0.1
> OS: Win 7
> 
> So I came across this issue as I just upgraded to 2.0.1. Basically,
> when i get a TableRow object using the [] method, and then try to get
> the text value from it, it always returns the text of the row with
> index of zero.
> 
> Steps to reproduce:
> 1) HTML
> 
> <html>
>    <table id="a_table">
>        <tr><td>boring text</tr></td>
>        <tr><td>great text</td></tr>
>        <tr><td>the best text ever<td></tr>
>    </table>
> </html>
> 
> 2) Code
> 
> #------------------------
> require 'rubygems'
> gem 'watir', '=2.0.1'
> require 'watir'
> 
> b = Watir::IE.new
> b.goto 'http://localhost/test.html'
> 
> #get the third table row with text 'the best text ever'
> table = b.table(:id, 'a_table')
> row = table.rows[2]
> 
> 
> #the TableRow object has the correct ole_object stored within it
> #before we call row.text
> puts row.ole_object.invoke('innerHTML')
> 
> #trying to get the text unfortunately outputs the text from row 0:
> 'boring text'
> puts row.text
> 
> #now the TableRow object has the wrong ole_object in it
> puts row.ole_object.invoke('innerHTML')
> 
> #it looks like this happens because our TableRow object is using an
> index of zero and not two
> puts row.inspect
> #------------------------
> 
> 3) Summary
> 
> So, I read through some of the code, and it looks like this is
> happening because when we call
> table.row[2], our each method in elements_collection.rb doesn't pass
> on any index information to
> tagged_element_locator in container.rb. So, when we call set_specifier
> inside tagged_element_locator, we set a
> default value to an index of zero. Later on when we call row.text,
> it's locate method thinks we are looking
> for the row with an index of zero and not two. It then sets our
> ole_object in the TableRow object to the zero index value.
> 
> Brett
> 
> -- 
> Before posting, please read http://watir.com/support. In short: search before 
> you ask, be nice.
> 
> watir-general@googlegroups.com
> http://groups.google.com/group/watir-general
> watir-general+unsubscr...@googlegroups.com

-- 
Before posting, please read http://watir.com/support. In short: search before 
you ask, be nice.

watir-general@googlegroups.com
http://groups.google.com/group/watir-general
watir-general+unsubscr...@googlegroups.com

Reply via email to