第6章 Selenium2-Java 自动化测试模型

6.1  自动化测试模型介绍

  6.1.1  线性测试 :其实就是单纯地来模拟用户完整的操作场景。

               优势就是每一个脚本都是完整且独立的;

       缺陷测试用例的开发与维护成本很高。

  6.1.2  模块化驱动测试 :编程语言中模块化的思想,把重复的操作独立成公共模块,当用例执行过程中需要用到这一模块操作时则被调用,这样就最大程度上消除了重复,从而提高测试用例的可维护性。

  6.1.3  数据驱动测试 :数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.(我们读取的是定义的数组、字典,或者是外部文件(excel、csv、txt、xml等)都可以看作是数据驱动。)

  6.1.4  关键字驱动测试:

6.2  模块化实例

    线性测试实例:

package com.cy;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestModel {
    
    public static void main(String[] args) throws InterruptedException {
        System.out.println("博客园登录 操作 退出");
        WebDriver driver =new FirefoxDriver();
        driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1");
        
        // 清除input 输入用户名
        driver.findElement(By.id("input1")).clear();
        driver.findElement(By.id("input1")).sendKeys("Smile燕");
        // 清除input 输入密码
        driver.findElement(By.id("input2")).clear();
        driver.findElement(By.id("input2")).sendKeys("acy123");
        
        // 点击登录
        driver.findElement(By.id("signin")).click();

        Thread.sleep(5000);
        
        /**
         * 操作
         */
        
        
        // 退出
        driver.findElement(By.linkText("退出")).click();
        Thread.sleep(5000);
        // // 接受弹框
        driver.switchTo().alert().accept();
        Thread.sleep(5000);
        // 关闭浏览器
        driver.quit();
    }

}

模块化驱动测试实例: 把登录和退出进行封装。

package com.cy;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestModel {
    
    public static void main(String[] args) throws InterruptedException {
            System.out.println("博客园登录 操作 退出");
            WebDriver driver =new FirefoxDriver();
        /**
         * 操作
         */
            login(driver);
            Thread.sleep(5000);
            logout(driver);
            Thread.sleep(5000);
            // 关闭浏览器
            driver.quit();
        
    }
    
    
    public static void login(WebDriver driver) {
        driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1");
        
        // 清除input 输入用户名
        driver.findElement(By.id("input1")).clear();
        driver.findElement(By.id("input1")).sendKeys("Smile燕");
        // 清除input 输入密码
        driver.findElement(By.id("input2")).clear();
        driver.findElement(By.id("input2")).sendKeys("acy123");
        
        // 点击登录
        driver.findElement(By.id("signin")).click();

        
    }
    
    
    public static void logout(WebDriver driver){
              // 退出
                driver.findElement(By.linkText("退出")).click();
                
                // // 接受弹框
                driver.switchTo().alert().accept();
                
    }

}

 我们可以把这两个方法 封装成单独的文件中供其它用例调用。这样对于每个用例来说就简便了许多,也更易于维护。

数据驱动实例:前面提到关于数据驱动的形式有很多,我们既可以通过定义变量的方式进行参数化,也可以通过定义数组、字典的方式进行参数化,还可以通过读取文件(txtcsvxml)的方式进行参数化。

package com.cy;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestModel {
    
    public static void main(String[] args) throws InterruptedException {
            System.out.println("博客园登录 操作 退出");
            WebDriver driver =new FirefoxDriver();
        /**
         * 操作
         */
            String username="Smile燕";
            String password="acy123@@";
            login(driver,username,password);
            Thread.sleep(5000);
            logout(driver);
            Thread.sleep(5000);
            // 关闭浏览器
            driver.quit();
        
    }
    
    
    public static void login(WebDriver driver,String username,String password) {
        driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1");
        
        // 清除input 输入用户名
        driver.findElement(By.id("input1")).clear();
        driver.findElement(By.id("input1")).sendKeys(username);
        // 清除input 输入密码
        driver.findElement(By.id("input2")).clear();
        driver.findElement(By.id("input2")).sendKeys(password);
        
        // 点击登录
        driver.findElement(By.id("signin")).click();

        
    }
    
    
    public static void logout(WebDriver driver){
              // 退出
                driver.findElement(By.linkText("退出")).click();
                
                // // 接受弹框
                driver.switchTo().alert().accept();
                
    }

}

关键字驱动测试实例:(未完待续哈。。。)

原文地址:https://www.cnblogs.com/hellokitty1/p/6382496.html