Paul, I just put a quick performance page with 200 radio elements on.
Using Watir 1.6.2 in a Windows XP Virtual Machine it took me just under 5 seconds to iterate over all of them and print the values. I agree that it did seem to run more slowly per element by the end. Could you possibly create a test page which you can share that recreates the issue you are seeing? Thanks, Alex On 21 May 2009, at 05:15, Paul Denize wrote: > > I finally found a performance issue and it was in the watir library. > > If a page (and dont get me started about it) has 200 plus radio > buttons and your watir script decides to print all the attributes like > so > > radios = ie.radios() > for radio in radios > puts radio.name > puts radio.value > end > > Then please be ready to wait for 16 Minutes ..... > > It seems it goes slower and slower as the process runs ... asking for > the name or value of the 200th will take a LOT longer than asking for > the name/value of the 1st. > > I was somewhat confused when I called ie.radios the documentation > suggests it returns an array of radios. But that would imply that > asking for a property on the first item in the arrray would be exactly > the same speed as asking for a property on the last (which clearly it > is not). > > Now I started to do the same parsing of the document as done by > show_all_objects but I had difficulty replicating some attributes > (like a links text) and some of the element types. > > Could someone please look at the performance issues with these > functions or suggest a function that could output all the page > elements. I was using the code below and calling with say > > puts objectlist(ie.links) > puts objectlist(ie.forms) > puts objectlist(ie.text_fields) > puts objectlist(ie.radios) > puts objectlist(ie.checkboxes) > puts objectlist(ie.select_lists) > puts objectlist(ie.file_fields) > puts objectlist(ie.buttons) > > Now normally I was only outputting one when the user called sa radio > (:id,'xxx') and it failed I'd output objectlist(ie.radios) so they > could see all the radios that exist. But the performance has meant I > have had to comment all that out for now. > > def objectlist(objects) > objs_info = [] > index=1 > objects.each {|f| > obj_info = [] > obj_info.push(":index=#{index}") > index+=1 > begin > if (f.object_id!="") > obj_info.push(":id=#{f.object_id}") > end > rescue > end > begin > if (f.name!="") > obj_info.push(":name=#{f.name}") > end > rescue > end > begin > if (f.text!="") > obj_info.push(":text=#{f.text}") > end > rescue > end > begin > if (f.value!="") > obj_info.push(":value=#{f.value}") > end > rescue > end > puts obj_info.join(", ") > objs_info.push(obj_info.join(", ")) > } > return objs_info > end > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Watir General" group. To post to this group, send email to watir-general@googlegroups.com Before posting, please read the following guidelines: http://wiki.openqa.org/display/WTR/Support To unsubscribe from this group, send email to watir-general-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/watir-general -~----------~----~----~----~------~----~------~--~---