LAB2 Selenium上机实验

一. 实验要求

  1、安装SeleniumIDE插件

  2、学会使用SeleniumIDE录制脚本和导出脚本

  3、访问http://www.ncfxy.com使用学号登录系统(账户名为学号,密码为学号后6位),进入系统后可以看到该用户的邮箱。

  4、编写Selenium Java WebDriver程序,测试info.csv表格中的学号和邮箱的对应关系是否正确。

  将测试代码提交到github上

 

二.实验准备

  操作系统: Windows 8.1 64x

  IDE:Eclipse-Kepler 32x

 

三.实验步骤

  1. 安装SeleniumIDE插件

    在firefox菜单中找到添加组件——搜索Selenium——查看全部结果——搜索SeleniumIDE,找到SeleniumIDE并且下载安装。

    

    

    重启之后就能在firefox浏览器的右上角找到对应的SeleniumIDE图标,如下图:

    

 

  2. 使用SeleniumIDE录制脚本和导出脚本

    2.1 录制脚本

 打开浏览器,点击SeleniumIDE插件,这样的红点代表正在录制中。

      

      然后使用浏览器进行操作,全过程Selenium都在录制,结束操作后,再次点击红色的小圆点,结束录制,结果如下:

      

      录制完成后,我们可以点击播放,可以看到SeleniumIDE重复了我们刚才的操作。

      

    2.2 导出脚本

      菜单栏——文件——Export Test Case As...——然后我们可以看到有很多的导出选项,

      

      这里我们选择Java/JUnit 4/ WebDriver,将导出的文件改为后缀为.java的文件,然后我们就可以用例如Eclipse等IDE打开和编辑这个文件了,如下:

      

      

  3. 访问http://www.ncfxy.com,编写Selenium Java WebDriver程序,测试info.csv表格中的学号和邮箱的对应关系是否正确

    3.1 建立工程

      这里建立工程和普通工程无异,不同的是需要导入一些相关的jar包,比如

      

    3.2 访问目标网站

      这里我使用的是firefox浏览器,所以相应的dirver是firefox的,

      

      首先我们要设置一下firefox的系统中的位置,然后简单的访问一下目标网站。

1         System.setProperty("webdriver.firefox.bin", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
2         WebDriver driver = new FirefoxDriver();  
3   
4         driver.get("http://www.ncfxy.com/");  

    3.3 登录以及信息获取

      这里需要获取网页上的元素Element,来对网页进行操控。

      比如对于登陆界面的那个网页,我们右键,选择查看页面元素,可以找到如下信息:

      

      于是我们就找到了我们需要获取的目标的id,于是我们可以在程序中找到它们并且设定他们的值,并且操纵表单提交,

1         WebElement usernameEle = driver.findElement(By.id("name"));
2         WebElement passwordEle = driver.findElement(By.id("pwd"));
3         usernameEle.sendKeys(user);
4         passwordEle.sendKeys(pwd);
5         usernameEle.submit();  

      最后一行submit()使得表单提交。

      在下一个页面中,我们要获取邮箱信息,然而邮箱信息在页面元素中的结构如下:

      

      并有id或者name之类的属性可以让我们直接获取,这里我们需要使用xPath来获取目标元素。

      xPath简单的来讲,就是根据元素的结构来定位目标元素。

      比如这个邮箱847606784@qq.com的内容,我们可以用下面的xPath得到,

        WebElement emailEle = 
                driver.findElement(By.xpath("//tbody[@id='table-main']/tr[1]/td[2]"));
        
        String address = emailEle.getText();

      在tbody中用id找到目标元素的父级元素,然后用标签以及数组来定位。

     3.4 读取.csv文件

      .csv的读取有很多种方式,这里我选择了比较简洁的一种,简单的打开文件,简单的读取,

try {  
            BufferedReader reader = new BufferedReader(new FileReader("info.csv"));//换成你的文件名 
            
            String line = null;  
            while((line=reader.readLine())!=null){  
                String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
//                System.out.println(line);
                String user = item[0]; 
                String address = item[1];//这就是你要的数据了 

            }  

            return Arrays.asList(o);
        } catch (Exception e) {  
            e.printStackTrace(); 
            return null;
        }

    reader.readLine()得到了每一行的内容,由于.csv中的数据以‘,’分开,把它以逗号切分,然后从结果的数组中获取。

    3.5 参数化测试

      我们要对.csv文件中的每一条数据都执行一遍测试,这样,有多少条数据,就有多少个测试用例,我在这里使用了参数化,完整代码如下:

package cn.tju.scs.thy;

import static org.junit.Assert.*;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class SeleniumTestTest2 {
    
    private String input1;
    private String input2;
    private String expected;
    
    private SeleniumTest sel;
    
    public SeleniumTestTest2(String input1,String input2,String expected){
        this.input1 = input1;
        this.input2 = input2;
        this.expected = expected;
    }
    
    @Before
    public void setUp(){
        sel = new SeleniumTest();
    }
    
    @Parameters
    public static Collection<Object[]> getData(){
        
        try {  
            BufferedReader reader = new BufferedReader(new FileReader("info.csv"));//换成你的文件名 
            
           
            Object[][] o = new Object[109][];
            Object[] oo;
            int index = 0;
            String line = null;  
            while((line=reader.readLine())!=null && index<109){  
                String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
//                System.out.println(line);
                String user = item[0]; 
                String pwd = user.substring(4);
               
                String address = item[1];//这就是你要的数据了 
                
                oo = new Object[]{user,pwd,address};
                o[index] = oo;
               
                index++;
            }  

            return Arrays.asList(o);
        } catch (Exception e) {  
            e.printStackTrace(); 
            return null;
        } 
        
    }
    @Test
    public void test() {
        assertEquals(this.expected,sel.getEmailAddress(this.input1, this.input2));
    }

}

    于是,我们运行我们的测试代码,会看到程序会对每一条数据都执行一遍我们设定过的操作来测试。

      

转载于:https://www.cnblogs.com/xiaolinhe/p/6734874.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值