TJU_SCS_软件测试_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简单的来讲,就是根据元素的结构来定位目标元素。

      比如这个邮箱[email protected]的内容,我们可以用下面的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的读取有很多种方式,这里我选择了比较简洁的一种,简单的打开文件,简单的读取,

 1 try {
 2             BufferedReader reader = new BufferedReader(new FileReader("info.csv"));//换成你的文件名
 3
 4             String line = null;
 5             while((line=reader.readLine())!=null){
 6                 String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
 7 //                System.out.println(line);
 8                 String user = item[0];
 9                 String address = item[1];//这就是你要的数据了
10
11             }
12
13             return Arrays.asList(o);
14         } catch (Exception e) {
15             e.printStackTrace();
16             return null;
17         } 

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

    3.5 参数化测试

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

 1 package cn.tju.scs.thy;
 2
 3 import static org.junit.Assert.*;
 4
 5 import java.io.BufferedReader;
 6 import java.io.FileReader;
 7 import java.util.ArrayList;
 8 import java.util.Arrays;
 9 import java.util.Collection;
10 import java.util.List;
11
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.junit.runners.Parameterized;
16 import org.junit.runners.Parameterized.Parameters;
17
18 @RunWith(Parameterized.class)
19 public class SeleniumTestTest2 {
20
21     private String input1;
22     private String input2;
23     private String expected;
24
25     private SeleniumTest sel;
26
27     public SeleniumTestTest2(String input1,String input2,String expected){
28         this.input1 = input1;
29         this.input2 = input2;
30         this.expected = expected;
31     }
32
33     @Before
34     public void setUp(){
35         sel = new SeleniumTest();
36     }
37
38     @Parameters
39     public static Collection<Object[]> getData(){
40
41         try {
42             BufferedReader reader = new BufferedReader(new FileReader("info.csv"));//换成你的文件名
43
44
45             Object[][] o = new Object[109][];
46             Object[] oo;
47             int index = 0;
48             String line = null;
49             while((line=reader.readLine())!=null && index<109){
50                 String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
51 //                System.out.println(line);
52                 String user = item[0];
53                 String pwd = user.substring(4);
54
55                 String address = item[1];//这就是你要的数据了
56
57                 oo = new Object[]{user,pwd,address};
58                 o[index] = oo;
59
60                 index++;
61             }
62
63             return Arrays.asList(o);
64         } catch (Exception e) {
65             e.printStackTrace();
66             return null;
67         }
68
69     }
70     @Test
71     public void test() {
72         assertEquals(this.expected,sel.getEmailAddress(this.input1, this.input2));
73     }
74
75 }

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

      

时间: 2024-11-05 21:50:46

TJU_SCS_软件测试_lab2_Selenium的相关文章

软件测试_lab2_Selenium自动化

一.实验要求 1.安装SeleniumIDE插件 2.学会使用SeleniumIDE录制脚本和导出脚本 3.访问http://121.193.130.195:8080/使用学号登录系统(账户名为学号,密码为学号后6位),进入系统后可以看到该同学的git地址. 4.编写Selenium Java WebDriver程序,测试inputgit.csv表格中的学号和git地址的对应关系是否正确. 5.将测试代码提交到github上. 二.解决方法 1.安装SeleniumIDE插件 打开Firefox

TJU_SCS_软件测试_Lab1

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {

TJU_SCS_软件测试_homework1——《error impressed me most》

1.作业要求 作为TJU_SCS中一个普通的本科生,虽然我写的projects不多,但在学习和作业中也都遇到过许多不大小的bugs.errors,一方面是在完成作业或者是在学习新知识的过程中必然会由于编程知识的缺乏和技术经验的不足而遇到让人头痛的情况.这次作业要求把最近遇到的印象深刻的编程中的问题写到博客上,这里就简单的说明一下. 2.作业内容 上学期在选修图像处理这门课的时候,有一次作业让我印象深刻,由于一小段代码的失误,我折腾了数个小时,直到凌晨3点才找出问题. 2.1具体情况: 当时图像作

软件测试概述

• 不论软件的生产者还是软件的使用者,均生存在竞争的环境中: 软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局. 用户为了保证自己业务的顺利完成,当然希望选用优质的软件. 软件带来错误的原因很多,具体地说,主要有如下几点: • 交流不够.交流上有误解或者根本不进行交流 • 软件复杂性 • 程序设计错误 • 需求变化 • 时间压力 • 代码文档贫乏 • 软件开发工具 什么是软件测试 软件测试就是在软件投入运行前,对软件需求分析.设计规格说明和编码的最终复审

软件测试——Peer Review

一.什么是peer review peer review是一种通过作者的同行来确认缺陷和需要变更区域的检查方法.需要进行同行评审的特定产品在定义项目软件过程的时候被确定并且作为软件开发计划的一部分被安排的进度. 二.背景 这周三老师在课上安排了peer review,每5-6个人一个小组,自己进行分工,并对样例软件进行peer review. 三.peer review的图解及分工 Moderator (主持人) 主持人的主要职责,在评审会前负责正规技术评审计划和会前准备的检查:在评审会中负责调

软件测试不再黑盒— threadingtest带来第二代白盒覆盖率技术

软件测试不再黑盒- threadingtest带来第二代白盒覆盖率技术 穿线测试对于测试界的一个重大创新在于,在白盒测试理论出现数十年以后,上海零一拼装信息技术有限公司结合在测试理论方面十余年的潜心研究,率先提出了第二代覆盖率技术,这绝对不是一个口号,而是ZOA真正对于白盒测试的理解以及对于标准第三方测试服务的深度理解经过数年的基础研究以及2年有余的研发而推出的达到商用标准的技术.现在先让我们温习下经典的测试理论: 1.测试方法论 黑盒功能测试法 黑盒功能测试法, 是把要测试的软件看成一个 "黑

[ 测试思维 ] 探索式软件测试

非常不错的关于探索式软件测试的学习资料 1.探索式测试简析 作者:微软 史亮 http://pan.baidu.com/s/1c2D4tAo 2.探索式测试白皮书 作者:淘宝 季哥 http://pan.baidu.com/s/1qYFNG3y

软件测试的方法-------基于直觉和经验的方法

定义:基于直觉和经验的测试方法,不是严格意义上的科学测试方法,带有一定的随机性,测试结果不够可靠,甚至可以看作是没有办法的办法.但是,软件测试是具有社会性,呈现一定的不确定性.这时,采用直觉和经验往往能够发挥更好的作用.   1.Ad-hoc测试方法和ALAC测试 1.1.自由测试(Ad-hoc Testing)强调测试人员根据自己的经验,不受测试用例的束缚,放开思路.灵活地进行各种测试. 1.2.ALAC,是Act-like-a-customer(像客户那样做)的简写,是一种基于客户使用产品的

软件测试

一个团队在做一个软件的时候,必定离不开软件的测试,首先就是找出代码的Bug,也就是软件的错误.缺陷.Bug也可以分解为症状.程序错误.和根本原因.症状即是从用户的角度看,软件出了什么问题.程序错误乃是从代码的角度看,代码的什么错误导致了软件的问题.根本原因,错误的根源,即导致代码错误的根本原因.另外,我们测试设计游两类方法:黑箱和白箱,所谓黑箱/白箱就是指软件测试设计的方法,不是软件测试的方法.黑箱指的是在设计测试的过程中,把软件系统当作一个"黑箱",无法了解或使用系统的内部结构及知识