[Wtr-general] Javascript Alert windows
Matt Johnson
railmeat at gmail.com
Fri Oct 6 19:25:18 EDT 2006
On 10/5/06, Cain, Mark <Mark_Cain at rl.gov> wrote:
>
> 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*
>
> _______________________________________________
> Wtr-general mailing list
> Wtr-general at rubyforge.org
> http://rubyforge.org/mailman/listinfo/wtr-general
>
>
Hello,
I have been trying to use the second method described above with no success.
I am trying to clear a security dialog that appears after clicking a "Sign
In" button. I can see that the button gets clicked, then the script blocks.
If I kill the script ( by closing the browser, or whatever ) I get this
error message:
c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.1.1100/./watir/contrib/enabled_popup.rb:10:in
`enabled_popup': uninitialized constant Watir::PageContainer::GetWindow
(NameError)
from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.1.1100/./watir/contrib/enabled_popup.rb:9:in
`until_with_timeout'
from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.1.1100/./watir.rb:210:in
`wait_until'
from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.1.1100/./watir.rb:210:in
`until_with_timeout'
from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.1.1100/./watir/contrib/enabled_popup.rb:9:in
`enabled_popup'
from C:/ruby/mattj/scanmus/scanmus3.rb:79
Can anyone tell me what the problem is, or how I can debug this further? Why
is this not initialized? Does that mean I have some kind of path or other
environment problem. I am using WinXP SP2, ruby 1.8.2 (2004-12-25)
[i386-mswin32], watir 1.5.1.1100.
Thanks in advance.
--
MattJ
railmeat at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/wtr-general/attachments/20061006/305b982e/attachment-0001.html
More information about the Wtr-general
mailing list