This doesn't necessarily answer the question, but I imagine you'd be much better off using the Facebook api for this sort of thing. There also seems to be a few gems for working with the Graph API. To answer your question, I and others have run into issues with parsing complex tables and there are some strategies for dealing with that such as here<http://zeljkofilipin.com/watir-nokogiri/> .
https://developers.facebook.com/docs/graph-api/reference/app#roles On Monday, December 30, 2013 2:36:23 AM UTC-5, Colin Milyoni wrote: > > Hi folks, > > I'm new to both ruby and to watir, so I apologize in advance if this is a > massive rookie mistake. Assistance of any level is greatly appreciated. > > My problem is that I am running into a gigantic delay when executing a > simple watir script. This is the first time that I've run into such a large > delay. > > The point of the script is to go into Facebook's Developers section, open > an app, then individually remove test users from the app by clicking on a > checkbox which corresponds to a table row, then clicking a button on the > page which initiates a delete action, confirming the delete, then closing > the window. As you can see, I have a while-loop which will end the script > once the table has been thinned to only 11. > > Here is the code itself: > > require 'watir-webdriver' > b = Watir::Browser.new :chrome > > > b.goto "http://www.facebook.com" > b.text_field(:name=> "email").set "xxxxxxxxxxxxxxxxx" > b.text_field(:name=> "pass").set "xxxxxxxxxx" > b.input(:value=>"Log In").click > > b.goto " > https://developers.facebook.com/apps/1423456271203959/roles?role=test+users > " > > rows = b.elements(:class=>"odd").size > > while rows > 10 > b.tr(:id =>/test_user/, :index => 10).checkbox(:type =>"checkbox").set > b.input(:type =>"submit", :value=>"Remove").click > sleep 1 > b.input(:type =>"button", :value=>"Remove").click > sleep 1 > > sleep 2 > b.input(:type =>"button", :value=>"Close").click > end > > puts "Purge completed!" > > > After running the code line-by-line in IRB, I am able to conclusively > isolate the issue to this line of code: > > b.tr(:id =>/test_user/, :index => 10).checkbox(:type =>"checkbox").set > > You can see how long it takes this line to execute by viewing the attached > swf file called "Remove problem_with_selecting_ID_12-29-13.swf" > > When this line of code runs, the script takes 30-60 seconds just to run > that single line of code. Apparently that method is a little too complex, > but I'm not sure exactly why that is. Would anyone be able to explain to > me what the problem is exactly? My hunch is that the way that it is > parsing the DOM for that method is very inefficient. I'm sure there is > another way I could write my code but I would most be interesting in being > pointed to a resource which explains why it is that this is so inefficient. > I'd really appreciate that. > > Thanks, > > Colin > > > > -- -- Before posting, please read http://watir.com/support. In short: search before you ask, be nice. [email protected] http://groups.google.com/group/watir-general [email protected] --- You received this message because you are subscribed to the Google Groups "Watir General" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
