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
-~----------~----~----~----~------~----~------~--~---

Reply via email to