您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
ruby+selenium-webdriver自動化測試系列
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/4/11 14:06:04 ] 推薦標(biāo)簽:

面向?qū)ο缶幊?/p>

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

因此做如下改造:

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

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

3.建立測試用例進(jìn)行測試;

改造方法:

1.D盤下新建test003文件夾

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

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

4.login_dialog.rb文件中編寫如下代碼
?
module 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文件中編寫如下代碼
 
require 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文件中編寫如下代碼:
 
#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
    begin
      @login_element.login("test","test")
      err_message.should eql ("您輸入的帳號或密碼不正確,請重新輸入。意見反饋")
    ensure
      close_browser
    end
  end
end

7.命令行中輸入命令:

cd D: est003

rspec -f doc

看到如下結(jié)果:
?
soso login
  should return username and password is wrong
 
Finished in 8.3 seconds
1 example, 0 failures

上一頁1234567下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd