I have a written a Code in Selenium Web driver to test the health of the Contact Us page of my web site.
Code is working fine. My further aim is to:
- Use Rescue (to get error message when this scripts fail. Specifically when some element is not found during execution in the function > “def test_contact_us_screen_shot”).
Code for reference.
require 'rubygems'
require "selenium-webdriver"
require "test/unit"
class ContactUsScreenShot < Test::Unit::TestCase
def setup
@driver = Selenium::WebDriver.for :firefox
@base_url = "http://www.mycompany.com"
@driver.manage.timeouts.implicit_wait = 30
@verification_errors = []
end
def teardown
@driver.quit
assert_equal [], @verification_errors
end
def test_contact_us_screen_shot
@driver.get(@base_url + "/contact_us")
#This method will take screenshot and save it in the same folder from where script is executed.
@driver.save_screenshot("./screen1.png")
puts "screen shot taken"
assert_equal "mycompany.com - Discuss your requirements to Outsource Software Product Development, Offshore Software Testing,", @driver.title
@driver.find_element(:id, "compan").clear
@driver.find_element(:id, "company").send_keys "My Company"
@driver.find_element(:id, "first_name").clear
@driver.find_element(:id, "first_name").send_keys "Mrityunjay"
@driver.find_element(:id, "last_name").clear
@driver.find_element(:id, "last_name").send_keys "Chauhan"
@driver.find_element(:id, "email").clear
@driver.find_element(:id, "email").send_keys "mrityunjay@gmail.com"
@driver.find_element(:id, "phone1").clear
@driver.find_element(:id, "phone1").send_keys "9999999999"
@driver.find_element(:id, "addr1").clear
@driver.find_element(:id, "addr1").send_keys "306 Office Address"
@driver.find_element(:id, "addr2").clear
@driver.find_element(:id, "addr2").send_keys "Office Address"
@driver.find_element(:id, "city").clear
@driver.find_element(:id, "city").send_keys "Dehradun"
@driver.find_element(:id, "state").clear
@driver.find_element(:id, "state").send_keys "UK"
Selenium::WebDriver::Support::Select.new(@driver.find_element(:id, "country")).select_by(:text, "India")
@driver.find_element(:id, "zip").clear
@driver.find_element(:id, "zip").send_keys "248001"
@driver.find_element(:id, "website").clear
@driver.find_element(:id, "website").send_keys "http://www.mycompany.com"
@driver.find_element(:id, "comments").clear
@driver.find_element(:id, "comments").send_keys "This is the Testing Script for Contact Us page. Please Ignore.\nThanks,\nMrityunjay Chauhan"
@driver.find_element(:name, "submit").click
assert_equal "mycompany.com - Discuss your requirements to Outsource Software Product Development, Offshore Software Testing,", @driver.title
begin
rescue Exception => e
puts e.message
@driver.save_screenshot("./error1.png")
end
puts "I am Here"
end
def element_present?(how, what)
@driver.find_element(how, what)
true
rescue Selenium::WebDriver::Error::NoSuchElementError
false
end
def verify(&blk)
yield
rescue Test::Unit::AssertionFailedError => ex
@verification_errors << ex
end
end
Following Rescue code is working fine in my code…
In rescue we can trace the errors by using Log. For this we have to generated log file. Code is given below:
First define log at the start of your code as:
Next, we will move the error message to our log file using code given below:
Log will be something like this:
E, [2012-06-04T16:03:44.546875 #796] ERROR — : Error in Elements when not found!: Unable to locate element: {“method”:”id”,”selector”:”compan”}