The link in the other thread to https://gist.github.com/1445418 leads in 
the direction I am wondering about.

Since watir-webdriver is essentially wrapping the Selenium webdriver is 
there a way I can access the Action Builder as shown in that hover class 
mentioned in the link?  I have used Action builder in Selenium webdriver to 
access these same menus.  The code looked something like this:


d = Selenium::WebDriver.for :ie
top_menu = nil
all_top = d.find_elements :tag_name => "p"
all_top.each { |item| top_menu = item if item.text == "My Top Menu" }
submenu = d.find_element :link => "My Submenu Item"
d.action.hover( top_menu ).click( submenu ).perform   #complex mouse action


The actions are "strung together" to form one complex action after the 
elements are located.  This code worked in IE, Chrome, and Firefox.  I 
would like to have similar access in Watir. :)   


On Monday, April 23, 2012 5:09:59 PM UTC-5, Chuck van der Linden wrote:
>
> That behavior is exactly the sort of thing I've seen before..  did you 
> read the SO question and answers I linked in my prior response?
>
> What you are describing is very typical of a CSS powered menu that uses 
> the hover psuedoclass in CSS to control the visibility of various classes 
> of objects such as menus.  (what follows is a guess on my part based on the 
> behavior I've seen) It seems that with IE, the browser is pretty faithful 
> of reporting the mouse position, on a frequent basis. Such that we can 
> briefly lie it and issue a mouseover, click etc, but if the mouse is not 
> actually relocated over the menu then pretty much the very next opportunity 
> it gets, the position is reported back to the CSS engine, and the hover 
> psuedoclass is no longer applicable and the object immediately hidden.  
> What we were trying to do with .hover was to actually issue commands to 
> webdriver that would reposition the mouse, however that might not work in 
> all cases.
>
> if .hover is not working, I'd suggest investigating the workaround of 
> executing some script code on the browser that would alter the class (to 
> make it visible) or the visibility of the element so that you will be able 
> to click it.  Or if it is a simple link, just get the URL and navigate 
> there directly
>
> On Sunday, April 22, 2012 10:51:02 AM UTC-7, mndude wrote:
>>
>> I'm not sure if I'm quite communicating the actual problem correctly 
>> here.  So let me try to be more specific about the IE/Watir webdriver 
>> behavior.
>>
>> driver.p( :text => topmenu ).when_present.click  #or .hover
>>
>> The above line executes beautifully and correctly drops down the menu so 
>> the submenu items are visible.  On the next line *of any ruby code* the 
>> submenu disappears.  So it is like it was clicked and then some other UI 
>> action is taking place in IE which would cause the menu to disappear. 
>>  There is no similar problem in FF or Chrome - the submenu will drop down 
>> and stay that way on the next line of ruby code until i do some Watir UI 
>> action.
>>
>>
>>
>> On Friday, April 20, 2012 1:15:59 PM UTC-5, Chuck van der Linden wrote:
>>>
>>> well that's annoying.
>>>
>>> What platforn are you running on?  If I remember right hover might 
>>> depend on native events which is only enabled by default on windows.
>>>
>>> I think the extjs folks have a demo site, can you see if you can find 
>>> your control on it and give us a link to that page.
>>>
>>> That would give folks something to work with.
>>>
>>> there are a few other ways you might be able to skin this particular 
>>> cat, one thing I and others have done is using execute-script to fire off 
>>> some jquery code that flips the visibility state of the element (same thing 
>>> that happens when CSS see's a mouseover an triggers a :hover psuedo class 
>>> to come into effect.  Which can work great IF your site happens to be using 
>>> jquery. 
>>>
>>> Here's a link to a similar discussion from a few months back  
>>> https://groups.google.com/d/topic/watir-general/OIpBg7iS3Wo/discussion
>>>
>>> On Thursday, April 19, 2012 8:02:33 PM UTC-7, mndude wrote:
>>>>
>>>> The "hover" method produces the same result as "click" on the top 
>>>> menu. 
>>>>
>>>> On Apr 19, 5:01 pm, Chuck van der Linden <sqa...@gmail.com> wrote: 
>>>> > if you are using watir-webdriver have you tried the 'hover' method to 
>>>> get 
>>>> > the dropdown to appear? 
>>>> > 
>>>> > 
>>>> > 
>>>> > 
>>>> > 
>>>> > 
>>>> > 
>>>> > On Thursday, April 19, 2012 2:52:27 PM UTC-7, mndude wrote: 
>>>> > 
>>>> > > I have a web app with a top menu bar with drop down menus in it 
>>>> driven 
>>>> > > by javascript (extjs).  I can easily access the menu items in 
>>>> Firefox 
>>>> > > and Chrome.  But IE does not work the same way.  The menu requires 
>>>> > > either a mouse hover or click on the top item to drop down and then 
>>>> a 
>>>> > > click on the item to be selected.  This is easy and fast in FF, 
>>>> > > Chrome: 
>>>> > 
>>>> > > driver.p( :text => topmenu ).when_present.click 
>>>> > > driver.a( :text => submenu ).when_present.click 
>>>> > 
>>>> > > In IE what happens is that the first click drops down the menu, but 
>>>> > > then the menu disappears before the 2nd line can complete the click 
>>>> on 
>>>> > > the actual item to be selected.  The 2nd click fails because the 
>>>> item 
>>>> > > is, of course, not visible. 
>>>> > 
>>>> > > Watir webdriver appears to not have the Selenium webdriver actions? 
>>>> > > In Selenium webdriver I would try something like this: 
>>>> > 
>>>> > > driver.action.click(topmenu).click(submenu).perform 
>>>> > 
>>>> > > Is there a way to access the Selenium webdriver actions in Watir 
>>>> > > webdriver?  Or some other solution for IE in this situation?  The 
>>>> > > Watir browser object appears to not have an "action" set of methods.
>>>
>>>

-- 
Before posting, please read http://watir.com/support. In short: search before 
you ask, be nice.

watir-general@googlegroups.com
http://groups.google.com/group/watir-general
watir-general+unsubscr...@googlegroups.com

Reply via email to