自动化测试之元素操作

来源:互联网 发布:软件项目生命周期管理 编辑:程序博客网 时间:2024/05/22 23:07

当定位好页面元素后,在自动化测试中就需要对该元素进行操作。在selenium中已经定义了不少方法,常用的如:click、tag_name、attribute、text、send_keys、clear、enabled?、displayed?、submit、location等等。通过字面也能理解该方法的作用,查看selenium的源码也能通过注释知道作用:

      # Get the text content of this element      #      # @return [String]      #      def text        bridge.getElementText @id      end

element.text 就可以得到该元素的值,同理element.click 就是点击该元素。这样直接使用selenium的方法就可以完成对元素的操作,从而完成测试步骤和元素检查的工作。但是在实际工作中不建议这样直接使用selenium方法。我们要将这些方法重新封装到我们的测试框架中,在之前的文章《元素组织》中我们讲到了ElementBase元素基类,该类中有一个exist?方法,该方法就是封装了selenium的displayed?方法来判断元素是否存在。同样的我们继续在基类中定义更多的元素操作方法。

class ElementBase  .......  def click()    if exist?      @@element.click    end    end # 如果要检查页面是否显示某个信息,这个方法很实用 def get_text  if exist?     @@element.text  end endend

按照上面的方式将selenium的元素操作方法封装到我们自定义的ElementBase类中。一般我们还会对操作进行分类,比如大部分元素都适用的方法我们放到ElementBase类中,但对一些特别元素才适用的我们会派生出子类来定义,比如send_keys方法只有input元素才会用到,于是单独定义一个input类,该类又继承于ElementBase类。

class TextInput < ElementBase  def input(string_text)    @@element.send_keys string_text  endend

这样在定义一个输入框元素的时候继承于TextInput,并在构造函数实例化TextInput类。在case中使用该输入框的时候实例化该输入框,就可以调用input方法来输入值。

module AdminLogin class TxtUserName < TextInput   def initialize     TextInput.new("xpath","//@name=uname","TxtUserName")   end endendAdminLogin::TxtUserName.new.input userName
原创粉丝点击