[Wtr-general] Javascript Alert windows
Cain, Mark
Mark_Cain at RL.gov
Thu Oct 5 10:28:25 EDT 2006
The JavaScript Alert, Confirm, Prompt, Security, File Save, File
Download, File Upload, error message, and login (I think this is a
complete list but there may be others) are all a special type of modal
popup dialog window-there isn't a different one. In order to handle
these types of popups you have to start another thread independent of
your $ie thread OR you have to not block the process by using
click_no_wait.
There are two ways (that actually both use the WInClicker). The first
one is listed below that works with the older versions of Watir. The
second (I have found after using them both) is more reliable than the
first but require you having a Watir version greater than 1079 because
of some fixes to click_no_wait (can't remember the exact version). You
can get them here:
http://wiki.openqa.org/display/WTR/Development+Builds
First method (works with Watir 1.4.x):
def jsAlert(button, waitTime = 3)
w = WinClicker.new
longName = $ie.dir.gsub("/" , "\\" )
shortName = w.getShortFileName(longName)
c = "start ruby #{shortName}\\watir\\clickJSDialog.rb #{button}
#{waitTime} "
puts "Starting #{c}"
w.winsystem(c)
w=nil
end
Then, before the button you want to click that generates the popup, add
in:
jsAlert("OK", 3)
ie.button(:name, "woohoo").click # This is the button you want to
click that generates the popup
Second Method (faster and more reliable):
require 'watir\contrib\enabled_popup'
<Your code>
$ie.button("Button Label Text").click_no_wait
# use click_no_wait to click the button that invokes the JS Alert
$ie.button.click_no_wait
hwnd = ie.enabled_popup(5) # get a handle if one exists
if (hwnd) # yes there is a popup
w = WinClicker.new
w.makeWindowActive(hwnd)
# "OK" or whatever the name on the button is
w.clickWindowsButton_hwnd(hwnd, "OK")
end
NOTE: If you are using IE7 then the title on the JS Alert box is
different then IE6+ so you will need to alter you WinClicker.rb file for
either method.
\ruby\lib\ruby\site_ruby\1.8\watir\WinClicker.rb Lines 113 and 144.
IE6 = "Microsoft Internet Explorer"
IE7 = "Windows Internet Explorer"
Hope this helps,
--Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/wtr-general/attachments/20061005/4c0ddcf0/attachment-0001.html
More information about the Wtr-general
mailing list