Hi all,
I got the answer how to click on ‘ok’ button.
But still i have two problems
that code is not working when im trying to run that code through the exe
file of that ruby file which is using that code.
and second one is i want to capure the text of that popup…
i tried this with no success
#----- js_dialog.rb -----
require ‘win32ole’
require ‘test/unit’
require ‘test/unit/ui/console/testrunner’
Use AutoIt to read and close Javascript dialog windows
module JavascriptDialog
#
# Target javascript dialogs with this window title
#
WINDOW_TITLE = "Microsoft Internet Explorer"
class << self
#
# Return the text contained in a javascript dialog (e.g. an
“alert()”)
# if such a dialog is present or appears within +wait_seconds+.
#
def text(wait_seconds = 1)
# sleep 0.3
autoit.WinWait(WINDOW_TITLE, nil, wait_seconds) if
wait_seconds
s = autoit.WinGetText(WINDOW_TITLE)
s unless s == “1”
end
#
# Close any active javascript dialog
#
def close
autoit.WinClose WINDOW_TITLE
end
#
# Press the "OK" button on a javascript dialog
#
def ok
autoit.ControlClick(WINDOW_TITLE, "", "OK")
end
#
# Press the "Cancel" button on a javascript dialog
#
def cancel
autoit.ControlClick(WINDOW_TITLE, "", "Cancel")
end
#
# Press the "Yes" button on a javascript dialog
#
def yes
autoit.ControlClick(WINDOW_TITLE, "", "Yes")
end
#
# Press the "No" button on a javascript dialog
#
def no
autoit.ControlClick(WINDOW_TITLE, “”, “No”)
end
private
#
# Return an AutoIt COM object, creating it if it doesn't
already
# exist
#
def autoit
unless defined? @@autoit
@@autoit = WIN32OLE.new("AutoItX3.Control")
end
@@autoit
end
end
end
module Test::Unit::Assertions
#
# Passes if a Javascript dialog appears within +wait_seconds+ and
its
# text matches the given (optional) pattern.
#
# Use like this:
# assert_js_dialog do
# watir_command_to_make_dialog_appear
# end
# Or like this:
# assert_js_dialog /Text to find in the dialog/, "Cancel" do
# watir_command_to_make_dialog_appear
# end
#
def assert_js_dialog(pattern = //, action = "close", message = nil)
_wrap_assertion do
begin
pipe = IO.popen("ruby exetry.rb #{action}")
yield
window_text = pipe.read rescue ""
pipe.close
unless window_text.empty?
assert_block(build_message(message,
"<?> not found in JavaScript dialog.", pattern))
do
window_text.match(pattern)
end
else
raise Test::Unit::
AssertionFailedError.new(
build_message(message, “No JavaScript window
found.”))
end
ensure
pipe.close if pipe && !pipe.closed?
end
end
end
end
test - will close and print the text of an opened javascript dialog if
run as “ruby js_dialog.rb”
if $0 == FILE
action = ARGV.shift
|| “close”
print JavascriptDialog.text || “”
JavascriptDialog.send action
end