################### # Required packages ################### require 'watir' include Watir require 'watir/ie' require 'watir/WindowHelper' require 'win32ole' require 'watir/contrib/enabled_popup' def goto_link link $ie.goto(link) end def authenticate_it (win_title,usr,passwd) helper = WindowHelper.new helper.logon(win_title,usr,passwd) end def handle_popups ( key ) puts "Entered popup handler thread" autoit = WIN32OLE.new('AutoItX3.Control') loop do ret = autoit.WinWait("Message from webpage","",2) if (ret == 1) then puts "poupup found" autoit.Send(key) else puts "popup not found" end Thread.pass sleep 3 end end # Creating IE instance $ie = Watir::IE.new_window url = "192.168.111.80" win_title = "Connect to #{url}" usr = "admin" passwd = "" vid1 = "100" vid2 = "1.1" ports = [10,11,12,13]; thrd1 = Thread.new { goto_link url } thrd2 = Thread.new { authenticate_it(win_title,usr,passwd) } thrd1.join thrd2.join thrd3 = Thread.new { handle_popups('{enter}') } ############################# #Restoring switch to defaults ############################# $ie.frame(:name,"contents").link(:text,"Factory Defaults").click $ie.frame(:name,"main").button(:name,"factory").click sleep(3) $ie.refresh if ($ie.frame(:name,"main").contains_text("Port State Overview")) then puts "Switch successfully restrored to defaults" else puts "There might be problem in restoring to defaults" end ################################### #Adding a vlan vid1 with ports ################################### $ie.frame(:name, "contents").link(:text, "Configuration").click $ie.frame(:name, "contents").link(:text, "VLANs").click $ie.frame(:name, "contents").link(:text, "VLAN Membership").click $ie.frame(:name,"main").button(:value,"Add new entry").click sleep 1 $ie.frame(:name,"main").text_field(:name,"vid_new_1").set(vid1); ports.each do |p| $ie.frame(:name,"main").checkbox(:name,"mask_new_1_#{p}").set end $ie.frame(:name, "main").button(:value,"Save").click #-------------------------------- #Checking whether it is created #------------------------------- if ($ie.frame(:name,"main").contains_text("#{vid1}")) then puts "vlan entry #{vid1} is added" else puts "vlan entry #{vid1} is not added" end is_added = 1 ports.each do |p| if (!$ie.frame(:name,"main").checkbox(:name,"mask_#{vid1}_#{p}").checked?) puts "vlan #{vid1} not added successfully " is_added = 0; end end if (is_added) puts "vlan #{vid1} successfully added" end ################################### #Deleting vlan vid1 ################################### $ie.frame(:name,"main").checkbox(:name,"delete_#{vid1}").set $ie.frame(:name, "main").button(:value,"Save").click if ($ie.frame(:name,"main").contains_text(vid1)) puts "vlan entry #{vid1} is not deleted added" else puts "vlan entry #{vid1} is deleted successfully" end ################################### #Adding an invalid vlan id ################################### $ie.frame(:name,"main").button(:value,"Add new entry").click sleep 1 $ie.frame(:name,"main").text_field(:name,"vid_new_1").set(vid2); #$ie.frame(:name,"main").button(:value,"Save").click JavascriptPopupHandler js; jsh = JavascriptPopupHandler.new($ie, 'OK') jsh.pauseDuration = 0.1 jsh.handle { $ie.frame(:name,"main").button(:value,"Save").click } #hwnd = $ie.enabled_popup(5) #if (hwnd) #yeah! a popup # popup = WinClicker.new # popup.makeWindowActive(hwnd) # popup.clickWindowsButton("Message from webpage", "OK", "30") #end sleep 10 $ie.close thrd3.kill