selenium+JDBC实现参数自动化测试

测试模拟环境:在www.1905.com网站中执行两个用户的登陆退出操作

需要的文件有:

1、User的实例类:

public class User {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

2、DBUtil

public class MysqlUtil {
    public static Connection getConnection(){
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/SY","root","1905");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
    public static void close(Statement stmt,Connection conn){
        if(conn!=null){
            try {
                if(stmt!=null){
                    stmt.close();
                }
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

3、UserDAO

public class UserDAO {
    public List<String> usernameList() throws Exception{
        String username;
        List<String> usernameList=new ArrayList<String>();
        Connection conn = MysqlUtil.getConnection();
        Statement stat = conn.createStatement();
        ResultSet rst = stat.executeQuery("select * from user");
        System.out.println(rst);
        while(rst.next()){
            username = rst.getString("name");
            usernameList.add(username);
        }
        System.out.println(usernameList);
        return usernameList;
    }
    public List<String> passwordList() throws Exception{
        String password;
        List<String> passwordList=new ArrayList<String>();
        Connection conn = MysqlUtil.getConnection();
        Statement stat = conn.createStatement();
        ResultSet rst = stat.executeQuery("select * from user");
        while(rst.next()){
            password = rst.getString("password");
            passwordList.add(password);
        }
        System.out.println(passwordList);
        return passwordList;

    }

}

4、Junit测试类

public class LoginJDBCTest {

    private static WebDriver driver;
    private static Navigation navigate;
    private static String url="http://www.1905.com";
    private static String  filesrc = "UserAndPassword.xls";

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        //加载浏览器
        driver = new FirefoxDriver();
        navigate = driver.navigate();
        navigate.to(url);
        driver.manage().window().maximize();
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        if(driver!=null){
            driver.close();
            driver.quit();
        }
    }

    @Test
    public void test() throws Exception {
        UserDAO user = new UserDAO();
        List<String> usernameList = user.usernameList();
        List<String> passwordList = user.passwordList();
        int usersize = usernameList.size();
        for(int i=0;i<usersize;i++){
            new WebDriverWait(driver,15).until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//*[@id=‘site_nav_md‘]/ul/li[2]/a")));
            try {
                Thread.sleep(8000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            WebElement LogAndReg = driver.findElement(By.xpath(".//*[@id=‘site_nav_md‘]/ul/li[2]/a"));
            LogAndReg.click();
            WebElement username = driver.findElement(By.xpath(".//*[@id=‘inputUsername‘]"));
            WebElement password = driver.findElement(By.xpath(".//*[@id=‘inputPassword‘]"));
            WebElement login = driver.findElement(By.xpath(".//*[@id=‘loginreg‘]/div/div[1]/form/p/button"));
            username.clear();
            String name = usernameList.get(i);
            username.sendKeys(name);
            //输入对应的password值
            for(int j=0;j<passwordList.size();j++){
                password.clear();
                String pass = passwordList.get(j);
                password.sendKeys(pass);
            }
            login.click();
            WebDriverWait wait = new WebDriverWait(driver,10);
            WebElement logoutButton = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id=‘site_nav_md‘]/ul/li[3]/a[2]")));
            logoutButton.click();
        }
    }

}

以上代码是给自己的一个记录,其中有些还可以继续完善封装,剩下的就之后在完善好了~~

时间: 2024-10-12 16:53:19

selenium+JDBC实现参数自动化测试的相关文章

Mysql JDBC Url参数与异常问题

今天在写Java项目使用了 <select id="getPlans" parameterType="hashMap" resultType="hashMap">         SELECT             *         FROM             `plan`         WHERE             isDelete=#{isDelete} AND nestId in              &l

Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做一个总结吧,希望能给大家带来启发和帮助.由于业界没有成熟的解决方案可供参考,本人在研究过程中也是摸着石头过河,纰漏之处在所难免,如果大家有更好的方案,敬请不吝赐教. 分布式并行执行用例需求背景 公司的产品属于web app,采用的是Robot Framework + Selenium2Library

Selenium原理初步--Android自动化测试学习历程

章节:自动化基础篇——Selenium原理初步(第五讲) 注:其实所有的东西都是应该先去用,但是工具基本都一样,底层都是用的最基础的内容实现的,测试应该做的是: (1)熟练使用工具,了解各个工具的利弊,达到工具优选.因时因地制宜的目的 (2)读源码,理解原理,能够对开源的源码进行二次再创造,改编成适合自身产品的工具:或者自己直接编写适合测试的工具 (3)能够对测试过程中发生的异常进行分析和定位,对测试结果进行详细和系统的综合评定(需要能够分析定位问题,必须对自身产品了解,但更需要的是对底层代码和

Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件

1.UI测试框架搭建-目录结构 2. 文件介绍 2.1.baseinfo->__init__.py 配置文件定义基础参数 #-*-coding:utf-8-*- #测试用例配置参数 base_url = "http://xxxxx.com" undirect_username = "username" undirect_password = "password" direct_username = "username"

selenium+python—实现基本自动化测试

安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操 作的录制与回放功能,IDE 录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发脚本,下载地址:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/ 如何使用

Selenium(Webdriver)自动化测试常问到的问题解答(转自:潜龙0318)

今天朋友问我了几个关于Selenium自动化测试的问题,我看了一下感觉还比较典型.结合我以往自动化测试的经验,给出了一些儿粗浅的答案,希望能帮大家,如果大家有什么好的看法,希望相互交流,相互学习! (1)selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?答:Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的.但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的.需要开发人员规范开发习惯,如给页面元素加上唯

Selenium学习笔记(1) - 自动化测试体系与原理

技术体系 基于代码的测试(Code-Based Testing) 基于协议的测试(Protocol-Based Testing) 基于界面的测试(GUI-Based Testing) 工作原理 基于代码 定义期望结果 调用被测对象 对比实际结果 难点:1.前置条件或环境的准备:2.被测代码又大量的异常 优点:1.容易实施:2.原理简单:3.不需要太复杂的编程能力 基于协议 并非直接调用代码,而是模拟用户发送数据包 典型的接口测试,偏黑盒 非常清楚协议的工作过程 能够利用编程语言来操作协议 经常用

Selenium+excel实现参数化自动化测试

使用到的技术:POI对excel的解析.selenium自动化测试.junit 测试用例:登陆www.1905.com执行登陆-退出的操作 执行步骤: 1.首先创建一个excel,里面有用户名和密码列 2.新建 一个解析excel的java类 package com.m1905.java; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import

Selenium(Webdriver)自动化测试常问问题

http://blog.sina.com.cn/s/blog_c189e2590102w3bv.html (1)selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?答:Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的.但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的.需要开发人员规范开发习惯,如给页面元素加上唯一的name,id等,这样就能大大地提高元素定位的准确性.当然如果开发人员开发不规范,我们在