• 第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();
                    
        }
    
    }

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

  • 相关阅读:
    算法导论:快速排序
    lintcode:打劫房屋 III
    lintcode:打劫房屋II
    lintcode:打劫房屋
    算法导论:二叉搜索树
    算法导论:整齐打印
    砝码称重问题二
    多重背包问题II
    多重背包问题
    lintcode:背包问题II
  • 原文地址:https://www.cnblogs.com/hellokitty1/p/6382496.html
Copyright © 2020-2023  润新知