• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ruby+selenium自動化測試:面向對象編程

    發表于:2012-09-05來源:Csdn作者:janne09點擊數: 標簽:ruby
    前一篇文章中寫了一個測試用例,看上去還算不錯。但是代碼的擴展性并不好,假想對登錄進行手動的功能測試,會想到哪些測試用例?(驗證錯誤的用戶名正確的密碼;

      前一篇文章中寫了一個測試用例,看上去還算不錯。但是代碼的擴展性并不好,假想對登錄進行手動的功能測試,會想到哪些測試用例?(驗證錯誤的用戶名正確的密碼;

      用戶名和密碼為空直接點擊登陸按鈕。等等)是不是每個用例都要寫一套代碼呢?答案肯定是否定的??梢园训卿浀墓δ艹橄蟪梢粋€方法。進一步研究發現,有些測試對象也是可以復用的,比如在登陸的時候我們會用到密碼輸入框、點擊登錄按鈕等,可以把這些“基本動作”封裝到一個類中,這樣代碼的靈活性和適用性將會更強。即,面向對象編程。

      因此做如下改造:

      1.定義一個工具類,此工具類定義方法,各個方法分別用于獲取登錄連接、用戶名、密碼、登錄按鈕等元素;

      2.定義一個實現類,此類中定義方法,方法目的是對獲取的元素進行操作(點擊、錄入值等),對元素的操作組織登錄方法;

      3.建立測試用例進行測試;

      改造方法:

      1.D盤下新建test003文件夾

      2.test003文件夾下新建三個文件夾,分別為action、tool、spec。其中action存放實現類,tool存放工具類,spec存放測試用例

      3.action文件夾下新建文件login_main_page.rb;tool文件夾下新建文件login_dialog.rb;spec文件夾下新建文件login_spec.rb

      創建的文件結構如下:

      4.login_dialog.rb文件中編寫如下代碼

      [ruby] view plaincopymodule LoginDialog

      def ua_link

      @dr.find_element(:id,'ua').find_elements(:css,'a')

      end

      def login_link

      ua_link[1]

      end

      def to_dialog_frame

      begin

      @dr.switch_to.frame('login_frame')

      rescue

      raise 'Can not switch to login dialog, make sure the dialog was open'

      exit

      end

      end

      def usr_field

      @dr.find_element(:id => 'u')

      end

      def psd_field

      @dr.find_element(:id => 'p')

      end

      def login_btn

      @dr.find_element(:id => 'login_button')

      end

      def err_message

      @dr.find_element(:id=>'err_m').text

      end

      def close_browser

      @dr.close

      end

      end

      5.login_main_page.rb文件中編寫如下代碼

      [ruby] view plaincopyrequire File.dirname(__FILE__)+'/../tool/login_dialog'

      class LoginMainPage

      include LoginDialog

      def initialize(dr)

      @dr ||=dr

      end

      def open_login_dialog

      login_link.click

      login_link.send_keys(:enter)

      sleep 2

      end

      def login(username,password)

      open_login_dialog

      to_dialog_frame

      usr_field.send_keys(username)

      psd_field.send_keys(password)

      login_btn.click

      end

      end

      6.login_spec.rb文件中編寫如下代碼:

      [ruby] view plaincopy#encoding: utf-8

      require "rspec"

      require 'yaml'

      require 'selenium-webdriver'

      require File.dirname(__FILE__)+'/../action/login_main_page'

      require File.dirname(__FILE__)+'/../tool/login_dialog'

      describe "soso login" do

      include LoginDialog

      before(:all) do

      @dr=Selenium::WebDriver.for :firefox

      @url='http://www.soso.com'

      @dr.get @url

      end

      before(:each) do

      @login_element=LoginMainPage.new(@dr)

      end

      it "should return username and password is wrong" do

      @login_element.login("test","test")

      err_message.should eql ("您輸入的帳號或密碼不正確,請重新輸入。意見反饋")

      close_browser

      end

      end

      7.命令行中輸入命令:

      [plain] view plaincopycd D:\test003

      rspec -f doc

      看到如下結果:

      [ruby] view plaincopysoso login

      should return username and password is wrong

      Finished in 8.3 seconds

      1 example, 0 failures

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>