That got me further.
Now I have a question about click_no_wait. When I use just 'click', I
get a popup with an OK and Cancel button. When I use click_no_wait, I
am now not getting any popup. If I use sleep right after
click_no_wait, does the browser keep going so I would expect to see a
popup?
And no, the OK button is not getting clicked to clear the popup.
Here is the code.
roles_page.roles.row(:name => "Test Role").col1_element.click
#click on checkbox
roles_page.bottom_delete.click_no_wait
# shows confirm dialog (only working if I use click)
sleep 5
startClicker
("OK")
# try to click OK button, doesn't work
and startclicker is now
def startClicker( button_label , waitTime= 9, user_input=nil )
# get a handle if one exists
hwnd = nil
begin
hwnd = SITE.browser.enabled_popup(waitTime)
rescue TimeOutException => e #<===============================This
exception is always thrown right now
#popup not found
end
if (hwnd) # yes there is a popup
puts 'popup found'
w = WinClicker.new
w.makeWindowActive(hwnd)
if ( user_input )
w.setTextValueForFileNameField( hwnd, "#{user_input}" )
end
# "OK" or whatever the name on the button is
puts "Trying to click on " + button_label
w.clickWindowsButton_hwnd( hwnd, button_label )
#
# this is just cleanup
w=nil
else
puts "No popup found"
end
end
On a side note, why is enabled_popup defined as part of PageContainer
if it is meant to be called from a browser object only?
On Mar 4, 3:21 pm, Jim Matthews <[email protected]> wrote:
> OK, too bad you did not include this originally. I think I know what
> the problem is. At least I see something that is a problem. You
> have:
>
> hwnd = page_container.enabled_popup(waitTime)
>
> hwnd belongs to the browser, not the page, so you have to reference
> the borwser object like:
>
> hwnd = $ie.enabled_popup(waitTime)
>
> or change $ie to browser, or whatever you have defined as your browser
> object.
>
> I am doing something similar with Cucumber and I am having trouble
> with this. It successfully dismisses the first popup I hit but does
> not work on the second. I hope it works for you. Let me know, I am
> still trying to figure out the difference.
>
> Jim
>
> On Mar 4, 3:55 pm, [email protected] wrote:
>
>
>
> > Here is the code
>
> > def startClicker( page_container, button , waitTime= 9,
> > user_input=nil )
> > # get a handle if one exists
> > hwnd = page_container.enabled_popup(waitTime)
> > if (hwnd) # yes there is a popup
> > puts 'popup found'
> > w = WinClicker.new
> > w.makeWindowActive(hwnd)
>
> > if ( user_input )
> > w.setTextValueForFileNameField( hwnd, "#{user_input}" )
> > end
>
> > # "OK" or whatever the name on the button is
> > puts "Trying to click on " + button
> > w.clickWindowsButton_hwnd( hwnd, button )
> > #
> > # this is just cleanup
> > w=nil
> > else
> > puts "No popup found"
> > end
> > end
>
> > which is triggered by this cucumber step
>
> > Then 'I delete the Test Role role' do
> > roles_page.roles.row(:name => "Test Role").col1_element.click
> > #clicks on a checkbox (works fine)
> > roles_page.bottom_delete.click_no_wait # clicks on the
> > delete button (works fine)
> > sleep 5
> > startClicker(roles_page.logon_frame, "OK") # call function above
> > end
>
> > logon_frame is actually a <div> reference. I am thinking the first
> > parm might be wrong, but what should it be? The browser ref?
> > On Mar 4, 1:44 pm, Jim Matthews <[email protected]> wrote:
>
> > > OK, I looked at example 4.
>
> > > I noticed that the example incorrectly says require 'Watir' instead of
> > > require 'watir' (the W should be lowercase).
>
> > > and I assume that you did the :
>
> > > require 'watir/contrib/enabled_popup'
>
> > > and I assume you have done some sort of attach of "browser" that
> > > connects it to an IE browser, then does your code fail on the
>
> > > hwnd = browser.enabled_popup(5) ?
>
> > > browser.enabled_popup should return a hwnd only if the browser has a
> > > popup currently displayed.
>
> > > You can use fxri to help you figure out what is going wrong. If this
> > > is not correct or does not make sense, include your code. I also
> > > assume we are still working on the original:
>
> > > undefined local variable or method `hwnd' for #<Watir::Frame:
> > > 0x3d7b4d4>
>
> > > problem?
>
> > > Jim
>
> > > On Mar 4, 1:23 pm, [email protected] wrote:
>
> > > > I was basing my code on example 4. Use click_no_wait on a button I
> > > > know will cause a popup, and then call enabled_popup. The call from
> > > > enabled_popup never returns. I can post the entire exception trace if
> > > > that helps.
>
> > > > On Mar 4, 8:26 am, Jim Matthews <[email protected]> wrote:
>
> > > > > From your first post, I am not sure how you are trying to use
> > > > > ie.enabled_popup.
>
> > > > > I assume you are trying to something like what is described on the
> > > > > wiki:
>
> > > > >http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups
>
> > > > > I do not know which example you are following. If you take this one
> > > > > for example,
>
> > > > > require 'watir/contrib/enabled_popup'
>
> > > > > def popupChecker(text)
> > > > > Timeout::timeout(2)do
> > > > > begin
> > > > > if ie.enabled_popup
> > > > > hwnd = ie.enabled_popup(5)
> > > > > w = WinClicker.new
> > > > > w.makeWindowActive(hwnd)
> > > > > w.clickWindowsButton_hWnd(hwnd,text)
> > > > > end
> > > > > rescue Timeout::Error
> > > > > puts 'No popup existed'
> > > > > end
> > > > > end
> > > > > end
>
> > > > > The strange thing to me is that the error you show references a Watir
> > > > > frame. A frame would not have an hwnd associated with it directly, so
> > > > > I am not sure how you even got the error.
>
> > > > > I am trying to use the routine above and am finding that there must be
> > > > > some things on my system that keep it from working all the time.
> > > > > Sometimes it dismisses the popup and sometimes it doesn't.
>
> > > > > Jim
>
> > > > > On Mar 4, 5:26 am, [email protected] wrote:
>
> > > > > > Its not my code that is throwing the error. Here is the code for
> > > > > > enabled popup from my watir install. The line generating the error
> > > > > > is
> > > > > > hwnd_modal, arr = GetWindow.call(hwnd, GW_ENABLEDPOPUP) - hwnd is
> > > > > > undefined.
>
> > > > > > module Watir
> > > > > > module PageContainer
> > > > > > include Win32
> > > > > > def enabled_popup(timeout=4)
> > > > > > # Use handle of our parent window to see if we have any
> > > > > > currently
> > > > > > # enabled popup.
> > > > > > hwnd_modal = 0
> > > > > > Waiter.wait_until(timeout) do
> > > > > > hwnd_modal, arr = GetWindow.call(hwnd, GW_ENABLEDPOPUP)
> > > > > > hwnd_modal > 0
> > > > > > end
> > > > > > # use hwnd() method to find the IE or Container hwnd
> > > > > > (overriden
> > > > > > by IE)
> > > > > > if hwnd_modal == hwnd() || 0 == hwnd_modal
> > > > > > hwnd_modal = nil
> > > > > > end
> > > > > > hwnd_modal
> > > > > > end
> > > > > > end
> > > > > > end
>
> > > > > > On Mar 3, 1:49 pm, Jim Matthews <[email protected]> wrote:
>
> > > > > > > I thought you were having the same problem I am with popups, but I
> > > > > > > think yours is different at this point.
>
> > > > > > > The window handle is going to be on the browser and not a part of
> > > > > > > the
> > > > > > > DOM.
>
> > > > > > > You have to get the hwnd off the browser and go from there.
>
> > > > > > > Jim
>
> > > > > > > On Mar 3, 1:16 pm, [email protected] wrote:
>
> > > > > > > > Trying to execute enabled_popup and it is throwing an exception
>
> > > > > > > > undefined local variable or method `hwnd' for #<Watir::Frame:
> > > > > > > > 0x3d7b4d4>
>
> > > > > > > > I checked the source for enabled_popup and it does seem to have
> > > > > > > > an
> > > > > > > > undeclared variable. Is this working for other people. Working
> > > > > > > > on
> > > > > > > > latest version of watir.- Hide quoted text -
>
> > > > > > > - Show quoted text -- Hide quoted text -
>
> > > > > - Show quoted text -- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Watir General" group.
To post to this group, send email to [email protected]
Before posting, please read the following guidelines:
http://wiki.openqa.org/display/WTR/Support
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/watir-general
-~----------~----~----~----~------~----~------~--~---