在Watir中进行对象映射(Object Map)的方法

自动化测试工具都流行做对象映射,例如QTPObject RepositoryRFTObject Map,如果要在Watir中做对象映射应该怎么做呢?

 

 

查找了一下OpenQA上关于WatirFAQ,发现这种方法:

http://wiki.openqa.org/display/WTR/FAQ#FAQ-HowdoIcreateanapplication%2Fobjectmap%3F

How do I create an application/object map?

Insert the object recognition into a small method

def login_link;$ie.link(:text, 'Log in');end

def username_field;$ie.text_field(:name, 'userid');end

then in your test class do:

login_link.click

username_field.set(username)

 

但是好像行不通!修改成这样就可以:

require 'watir'

require 'test/unit'

 

class TC_myTest < Test::Unit::TestCase

 

  def setup

      @ie = Watir::IE.new

      @ie.goto("http://www.google.cn")

  end     

    

  def SearchField;@ie.text_field(:name,"q");end

  def SearchButton;@ie.button(:name,"btnG");end

 

 def test_1  

    #@ie = Watir::IE.new

    #@ie.goto("http://www.google.cn")

     

    SearchField().set('陈能技')

    SearchButton().click()

  end

 

end

 

 

后来又google了另外一种做法:

 

 

创建Map

require 'watir'

 

module Watir

  class Map

    def initialize(ie)

      @ie = ie

      Watir::Container.instance_methods.each do |method|

        Map.class_eval("def #{method}(k,v); @ie.#{method}(k,v); end") if

method !~/=/

      end

    end

  end

end

 

ie = Watir::IE.start('http://google.cn')

map = Watir::Map.new(ie)

# If leave out the Map class and instead do

#map = Watir::IE.start('http://google.cn') 

 

# 在这里集中定义测试对象映射

SearchField = map.text_field(:name, 'q')

SearchButton = map.button(:name, 'btnG')

 

# 使用映射对象

SearchField.set('陈能技')

SearchButton.click()

 

你可能感兴趣的:(object,IE,Module,Class,login,测试工具)