HI,
I have tried your code to capture text from popup window.
but i am getting a problem.
because of this line of ur code
assert_js_dialog do
@ie.button(:value, "Alert test").click
end
it runs the script indefinately.
please solve my problem..
i tried this as...
##//////////////////////////////////////////////////////////////////////////////////////////////////
##
## Watir script
##
##//////////////////////////////////////////////////////////////////////////////////////////////////
####requires
require 'watir'
require 'test/unit'
require 'test/unit/ui/console/testrunner'
require 'test/unit/assertions'
#require 'watir/setFileDialog'
#require 'popups_test'
#require 'enabled_popup'
#logger requires
require 'example_logger1'
require 'workbookfunction'
#java_pophadler requires
require 'WindowHelper'
require 'win32ole'
require 'js_dialog'
#require 'winClickers'
####includes
include Watir
class TC_PSC_userlogin < Test::Unit::TestCase
def start
#open the IE browser
$ie = IE.new
#create a logger
filePrefix = "logger"
$logger = LoggerFactory.start_xml_logger(filePrefix)
$ie.set_logger($logger)
##Excel file functions
$lgn=Excel_file.new #making object of workbookfunction
$wrk_sht=$lgn.ExcelOpen("c:\\PSC\\PSCuserlogin.xls")
##java popup hadling
#$pop=Jave_PopUps.new ##making object of javapopup
end
#----- js_dialog.rb -----
#require 'win32ole'
#
# 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
def test_PSCLogin
#call start method...
start #fires up the IE browser and a logger object
#variables-URL
test_site = 'https://www.philipnow.com/envcss/'
$logger.log("## PSCUser_Login_Logoff_4")
$logger.log("")
$logger.log("Description- Do not enter anything in the E-mail
Address and Password field and click Login button.") #logs only to
corelogger file
$logger.log("Expected Output-The user should not be able to login.")
$logger.log("")
$logger.log("Step 1: Go to the Philipnow.com :-
'https://www.philipnow.com/envcss/'")
$ie.goto(test_site)
$logger.log(" Action-1: entered " + test_site + " in the address bar.")
$logger.log(":Step 2: Do not enter any thing in user id")
val_userid=$lgn.TakeData("a",1,$wrk_sht)
$ie.text_field(:name, "username").set(val_userid.to_s)
$logger.log(" Action-2: entered Nothing in in e-mail address")
$logger.log(":Step-3: Do not enter any thing in password field")
val_password=$lgn.TakeData("b",1,$wrk_sht)
$ie.text_field(:name,"password").set(val_password.to_s)
$logger.log(":Action-3: entered Nothing in password field")
#$pop.startClicker("OK",3)
assert_js_dialog do
$ie.button(:name, "login").click
end
$logger.log(":Step-4: Click the Login button")
$pop.text(1)
$logger.log("Action-4: clicked the Login button.")
begin
assert($ie.contains_text("Welcome to Client Self-service
Portal, Alex Reyes!") )
$logger.log("*FAILED*." + e.message + "\n" + e.backtrace.join("\n"))
$logger.log("Test Failed:Expected result has not been
achieved:- User is able to login ")
$logger.log_results( "PSCUser_Login_Logoff_4","Description-Do
not enter anything in the E-mail Address and Password field and click
Login button.","Expected Output-The user should not be able to
login.","TEST FAILED:") #logs to both the XML file and corelogger
rescue => e
$logger.log("Test Passed:Expected result has been achieved:-
User is not able to login ")
$logger.log_results( "PSCUser_Login_Logoff_4","Description-Do
not enter anything in the E-mail Address and Password field and click
Login button.","Expected Output-The user should not be able to
login.","TEST PASSED:") #logs to both the XML file and corelogger
end
$ie.close
$logger.log("Close excel file")
$lgn.excel_close
$logger.log("Closed excel file")
$logger.log "## End of test: PSC login\n"
end
end
please help!!!
Thanks in Advance
Regards and Thnaks
Shalini gupta
_______________________________________________
Wtr-general mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/wtr-general