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

本文介绍了两种在Watir中实现对象映射的方法,并通过示例展示了如何定义和使用映射对象来简化测试脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动化测试工具都流行做对象映射,例如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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值