[Wtr-general] Determining if control is hidden

Charley Baker charley.baker at gmail.com
Wed Aug 23 15:07:24 EDT 2006


Hi David,

   Can you post this to the user contributions wiki page?
http://wiki.openqa.org/display/WTR/Contributions
This is a good example of how to inject additional functionality into Watir.


-Charley

On 8/23/06, David Schmidt <davids at tower-mt.com> wrote:
>
> I had this same problem, and the problem is deeper than it seems. I had
> an element and I had to determine if it was visible or not, but
> sometimes the element was NOT visible, even when it didn't have
> "display: none" or "visibility: hidden". Turns out a parent DIV a few
> levels up *was* hidden, and all it's children were thus hidden.
>
> I've added a #visible? method to the modal_dialog branch which iterates
> up to the top of the DOM tree checking to make sure every parent element
> is visible. Note that this is a relatively SLOW call because the only
> way to ensure an element is visible is to make sure every parent is
> visible.
>
> If you place the following code in a file and require it you should be
> able to do an "element.visible?" call.
>
> class Element
> # If any parent element isn't visible then we cannot write to the
> # element. The only realiable way to determine this is to iterate
> # up the DOM element tree checking every element to make sure it's
> # visible.
> def visible?
> # Now iterate up the DOM element tree and return false if any
> # parent element isn't visible or is disabled.
> object = document
> while object
> begin
> if object.style.invoke('visibility') =~ /^hidden$/i
> return false
> end
> if object.style.invoke('display') =~ /^none$/i
> return false
> end
> if object.invoke('isDisabled')
> return false
> end
> rescue WIN32OLERuntimeError
> end
> object = object.parentElement
> end
> true
> end
> end
>
> David Schmidt
>
> tom.dietz at thomson.com wrote:
> >
> > Is there an easy way to determine if a control (a checkbox in my case)
> > is hidden?
> >
> > I have a checkbox that exists in a <TD> that (through several wrapped
> > divs) ends up being hidden sometimes. Is there an easy way to
> > determine this?
> >
> > I've tried:
> >
> > if $ie.hidden(:id, "control id")
> >
> > and
> >
> > if $ie.hidden(:name, "control name")
> >
> > And neither seems to work.
> >
> > Thanks,
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Wtr-general mailing list
> > Wtr-general at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/wtr-general
>
> _______________________________________________
> Wtr-general mailing list
> Wtr-general at rubyforge.org
> http://rubyforge.org/mailman/listinfo/wtr-general
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/wtr-general/attachments/20060823/eaa1a3b7/attachment.html 


More information about the Wtr-general mailing list