• 基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器


        对于自动化测试,尤其是UI的自动化测试。是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一。

     对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论。但是,让测试人员解放生产力,提高效率,把精力关注与最为重要的核心业务逻辑与测试设计上,是每个测试团队所必需要关注的。因此,在适当的范围内开展自动化测试,是可以提高整个测试团队的生产率的。

      对于Selenium,这个东西是一个浏览器应用程序测试工具。之所以选择它做WebUI的自动化测试主要是因为它有以下两大优势:

    1.直接在浏览器中运行,就像真实用户所做的一样,可以模拟终端用户的操作,从最终客户的角度来测试应用程序。(这一点和黑盒功能测试很像吧。)

    2.可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Chrome和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。(嗯,多面能手)

       对于Java语言,我只想说你用你最拿手的就好。一个好的测试人员,不应该被开发语言所束缚。不管是Java/Python/Ruby/C#.........只要你熟悉,就尽量把它用起来吧。语言只是工具。

       接下来,我们好好的慢慢的理解一些东西,然后来逐步的去写一点东西,来认识一下自动化测试框架是个什么东西。

     PS:阅读本文的同学,希望拥有JAVA语言编程基础,了解基本的JAVA语法与数据结构,同时,对Selenium的基本API有所了解。

     在写这个框架之前,我们要明确我们主要操作的对象是什么。------->页面元素。

    我们要了解java在使用selenium时的基本操作。例如,使用以下代码:

    driver.findElement(By.xpath("/html/body/div/div/div[2]/form/button")).click();

    在这里,driver的意思是定义的WebDriver,findElement是driver这个对象调用的方法----->寻找页面元素,By.xpath是定位页面元素的方式,(“/html/body/div/div/div[2]/form/button”)是定位页面元素的参数,

    .click()是找到页面元素后的动作------->点击。

       那么,我们在这里考虑一下。对于通常的黑盒功能测试中,我们想在网页上面去找一个地方,进行点击或者输入文字等操作的时候,

    我们一般会这样说:“用户名输入admin,密码是abcd”。

    但是对于测试的代码来说,实际上有可能是:“找到页面元素ID是UserId的元素,使用sendKeys方法,参数为admin,找到页面元素ID是Password的元素,使用sendKeys方法,参数是abcd”。

    需要解决的问题:

    用户名(我们说的)--------->找到页面元素ID是UserId的元素(代码),输入admin(我们说的)--------->使用sendKeys方法,参数为admin。(代码)

        一个页面元素的寻找需要几个要素,寻找的方式,寻找的参数,等待的时间。另外,为了我们说的话,代码能够明白,需要加上一个名字,用来告诉代码。

        我们需要自己定义一个类,这个类就是页面元素类。通过上面的说明,我们知道这个类中需要定义的基本变量。(定位方法,路径,名字),另外,寻找路径需要时间,我们再加上一个时间。

    package webui.xUtils;
    
    public class Position {
      private String path; //----->路径
       //位置名字,就是我们通常意义上叫的名字。例如:用户名输入框
      private String positionName;
      private ByType type;//定位方法
      private int waitSec;//等待时间
    
      //selenium的基本八种定位方法。
      public enum ByType{
          xpath,id,name,className, cssSelector,tagName, partialLinkText,linkText 
      }
    
      public String getPath() {
        return path;
      }
    
      public void setPath(String path) {
        this.path = path;
      }
    
      public String getPositionName() {
        return positionName;
      }
    
      public void setPositionName(String positionName) {
        this.positionName = positionName;
      }
    
      public ByType getType() {
        return type;
      }
    
      public void setType(ByType type) {
        this.type = type;
      }
    
      public Position(String path, ByType type, String positionName) {
        super();
        this.path = path;
        this.positionName = positionName;
        this.type = type;
      }
      
    //这种可以看作是针对iframe的情况   public Position(String path,String positionName) {     super();     this.path = path;     this.positionName = positionName;   }   public Position(String path, int waitSec, ByType type, String positionName) {     super();     this.path = path;     this.waitSec = waitSec;     this.positionName = positionName;     this.type = type;   }   public int getWaitSec() {     return waitSec;   }   public void setWaitSec(int waitSec) {     this.waitSec = waitSec;   } }

        使用上面的代码,我们就定义了最初的一个Position类,这就是我们要寻找的页面元素。

  • 相关阅读:
    linux系统命令学习系列-用户切换命令su,sudo
    linux系统命令学习系列-用户组管理
    linux系统命令学习-用户管理
    python web开发-flask中sqlalchemy的使用
    python web开发-flask连接sqlite数据库
    python实现bt种子 torrent转magnet
    prefProvider.kt
    douyin-bot-代码
    pyadb关于python操作adb的资料
    bottle源码
  • 原文地址:https://www.cnblogs.com/generalli2019/p/11410656.html
Copyright © 2020-2023  润新知