2

私のWebサイトのContactUsページの状態をテストするために、SeleniumWebドライバーでコードを作成しました。

コードは正常に機能しています。私のさらなる目的は次のとおりです。

  1. Rescueを使用します(このスクリプトが失敗したときにエラーメッセージを取得します。具体的には、関数> "def test_contact_us_screen_shot"で実行中に要素が見つからない場合)。

参照用のコード。

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
4

3 に答える 3

1

答えは次のとおりです。代わりに「find_elements」を使用すると、例外をスローする代わりに空の配列が返されます。

于 2012-05-31T20:27:35.767 に答える
0

このような意味ですか

begin
    @driver.find_element(:name, "submit") 
rescue
    @driver.save_screenshot("Submit_button_not_present.png")
    assert_match "true","false","Your error message"
end
于 2012-05-30T14:53:12.897 に答える
-1

次のレスキューコードは私のコードで正常に機能しています...

rescue Exception => e
        puts e.message
        puts "Element Not Found"
        @driver.save_screenshot("./Test-Results/Contact_Us_Error.png")
        puts "I am Here"
    end #rescue

救助では、ログを使用してエラーを追跡できます。このために、ログファイルを生成する必要があります。コードを以下に示します。

まず、コードの先頭でログを次のように定義します。

# Here I have created a log file in my "Test-Result" folder
$log = Logger.new('./Test-Results/logfile.log')

次に、以下のコードを使用して、エラーメッセージをログファイルに移動します。

rescue Exception => e
            $log.error "This is the Error occurred when Element/s not found: #{e}"
            @driver.save_screenshot("./Test-Results/Contact_Us_Error.png")
            puts "I am Here"
        end #rescue

ログは次のようになります:E、[2012-06-04T16:03:44.546875#796]エラー-:見つからない場合の要素のエラー!:要素が見つかりません:{"method": "id"、 "selector ":" compan "}

于 2012-06-04T11:03:12.470 に答える