Ian, Sorry about the "rows" and "each_with_index" issues. Hopefully that'll teach me to test suggestions : )
table(:index,29) clearly does the same thing I thought table(:index,29).rows does. As for the "each_with_index", if you just mixin the Enumerable module to the Watir::Table class like this: class Watir::Table include Enumerable end before you use "each_with_index", then you should be in good shape. This seems like something that should be added to the base Watir, since rows in a table are generally an enumerable element and the current Watir::Table.each method returns the rows of the table in order. Any objections? If not, I'll open a ticket. Ethan On 5/7/07, Ian Webb <[EMAIL PROTECTED]> wrote: > Thanks - this does look like a good approach. The table's layout doesn't > change, it just reloads to update the data within the table with the > entries that were just made in the popup window. It's a really annoying > UI, especially when you have test cases that require changing a dozen > rows and therefore opening the popup a dozen times.. hence why I'm quite > eager to get Watir doing it instead. > > However, each_with_index appears to be an undefined method for ie.table > objects. I can iterate on .each just fine, but .each_with_index is > undefined. (.rows is undefined as well; .each works fine if I leave it > out) > > I'm wondering if maybe there's a way to store the indices of the buttons > it's going to click on within the array, rather than the rows > themselves. I tried buttons_to_click << row[5].link(:index,1), but that > doesn't work. > > Thanks, > Ian > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Ethan Jewett > Sent: Saturday, May 05, 2007 6:55 PM > To: [email protected] > Subject: Re: [Wtr-general] Using an ie.table.each do |row| loop when > thepage in the ie window refreshes itself > > Ian, > > Reloading probably invalidates the table object, resulting in your > "Access denied" error when ruby goes back for the next row in the > table. > > Suggestion: Assuming that submitting and reloading doesn't affect the > table layout, use rows.each_with_index to build an array of indices of > relevant rows. Then cycle through the array clicking and submitting. > For instance (untested, unfortunately): > > rows_to_click = Array.new > > ie.table(:index, 29).rows.each_with_index do |row, i| > rows_to_click << i if (row[1].text =~ /#{journals}/) != nil > end > > rows_to_click.each do |i| > [Do the clicking and such for row i here.] > end > > This could be made substantially prettier, but hopefully it gets the job > done. > > Ethan > > On 5/4/07, Ian Webb <[EMAIL PROTECTED]> wrote: > > Here's the code snippet that's giving me problems: > > > > ie.table(:index,29).each do |row| > > if (row[1].text =~ /#{journals}/) != nil then #If there is a match > > for that regex > > row[5].link(:index,1).click # this makes the popup window appear > > cw = Watir::IE.attach(:title,'Popup Window') # attach to the > popup > > window > > doRolesPopup(cw) # fill out and submit the form > > end > > end > > > > doRolesPopup fills out a form in the cw page, then clicks submit. The > > submit button submits the form, then closes the cw window and reloads > > the ie window. This reload of the page referenced by the ie object > > appears to break the row object, since I get the following error: > > > > c:/ruby/lib/ruby/site_ruby/1.8/watir.rb:2461:in `invoke': unknown > > property or method `rows' (WIN32OLERuntimeError) > > HRESULT error code:0x80070005 > > Access is denied. from > > c:/ruby/lib/ruby/site_ruby/1.8/watir.rb:2461:in `row' > > from c:/ruby/lib/ruby/site_ruby/1.8/watir.rb:2404:in `each' > > from c:/ruby/lib/ruby/site_ruby/1.8/watir.rb:2404:in `upto' > > from c:/ruby/lib/ruby/site_ruby/1.8/watir.rb:2404:in `each' > > from assignroles.rb:51 > > from c:/ruby/lib/ruby/1.8/csv.rb:532:in `parse' > > from c:/ruby/lib/ruby/1.8/csv.rb:560:in `each' > > from c:/ruby/lib/ruby/1.8/csv.rb:531:in `parse' > > from assignroles.rb:35 > > > > Is there any way to keep this simple .each loop, or do I need to work > > around it? > > > > Thanks, > > Ian > > _______________________________________________ > > Wtr-general mailing list > > [email protected] > > http://rubyforge.org/mailman/listinfo/wtr-general > > > _______________________________________________ > Wtr-general mailing list > [email protected] > http://rubyforge.org/mailman/listinfo/wtr-general > _______________________________________________ > Wtr-general mailing list > [email protected] > http://rubyforge.org/mailman/listinfo/wtr-general > _______________________________________________ Wtr-general mailing list [email protected] http://rubyforge.org/mailman/listinfo/wtr-general
