当前位置: 首页 > news >正文

ST:(Lab2)Selenium 实验

一、        实验内容

  1. 安装SeleniumIDE插件
  2. 学会使用SeleniumIDE录制脚本和导出脚本
  3. 访问http://www.ncfxy.com使用学号登录系统(账户名为学号,密码为学号后6位),进入系统后可以看到该用户的邮箱。
  4. 编写Selenium Java WebDriver程序,测试info.csv表格中的学号和邮箱的对应关系是否正确。
  5. 将测试代码提交到github上。

二、        实验目的

  1. 了解并掌握SeleniumIDE的使用,利用SeleniumIDE进行网页的自动化测试。
  2. 利用maven来自动构建测试项目。
  3. 学会编写Selenium Java WebDriver程序,然后对数据进行测试。

三、        实验过程

  1. 安装SeleniumIDE插件

首先下载火狐浏览器,并且在工具栏中的Web开发者中下载并安装SeleniumIDE插件。

安装好插件后,浏览器的工具栏会多出一个工具,如下图所示:

 

 

 

 

  1. 学会使用SeleniumIDE录制脚本和导出脚本

1)      录制脚本:

a)      点击火狐浏览器工具栏中的Selenium IDE,点击右侧的红色按钮开始进行录制脚本。(默认在打开Selenium IDE后脚本就已经开始录制了,所以开始时一般不用点击红色按钮)

b)      在浏览器中输入http://www.ncfxy.com,访问该网址。

c)      在网页中输入正确的学号和密码信息,并且点击提交。

d)      之后点击,右侧的红色按钮停止录制。过程如下图所示:

 

 

 

2)      导出脚本:

a)      在SeleniumIDE的弹框中,点击 文件—>Export test case as….—> java /JUnit4/WebDriver进行.java文件的导出。如下图所示:

 

 

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

1)      在eclipse中新建一个Maven Project,如下图所示:

 

2)      在src下的test中建立测试类WebTest,并且将导出的测试脚本用记事本打开,粘贴到这个测试类中,并相应地修改包名和类名。

3)      在测试项目下引入如下几种.jar文件:

 

4)      在导出的测试脚本中进行相应的修改:

传入两个参数分别代表id和email,然后才@Test下循环读入info.csv文件中的每一行,读出到id和email中,然后在循环中单独测试对于每个id,在输入密码正确的情况下,进行测试info.csv表格中的学号和邮箱的对应关系是否正确。测试代码如下:

package com.example.tests;

 

import java.nio.charset.Charset;

import java.util.regex.Pattern;

import java.util.concurrent.TimeUnit;

 

import org.junit.*;

 

import static org.junit.Assert.*;

import static org.hamcrest.CoreMatchers.*;

 

import org.openqa.selenium.*;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.support.ui.Select;

 

import com.csvreader.CsvReader;

 

public class WebTest {

  private WebDriver driver;

  private String baseUrl;

  private boolean acceptNextAlert = true;

  private StringBuffer verificationErrors = new StringBuffer();

  private String id = null;

  private String pwd = null;

  private String email = null;

 

  @Before

  public void setUp() throws Exception {

    driver = new FirefoxDriver();

    baseUrl = "http://www.ncfxy.com/";

    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

  }

 

  @Test

  public void testExp2() throws Exception {

       CsvReader cr =  new CsvReader("C:/Users/Administrator/Desktop/软件测试/第二次上机/info.csv", ',',Charset.forName("GBK"));

    while(cr.readRecord()){

         id = cr.get(0);

         email = cr.get(1);

         pwd = id.substring(4, 10);

         driver.get(baseUrl);

        driver.findElement(By.id("name")).clear();

        driver.findElement(By.id("name")).sendKeys(id);

        driver.findElement(By.id("pwd")).clear();

        driver.findElement(By.id("pwd")).sendKeys(pwd);

        new Select(driver.findElement(By.id("gender"))).selectByVisibleText("女");

        driver.findElement(By.id("submit")).click();

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

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

 

        if(id.equals(number)){

           assertEquals(email,email1);

        }

      

    }

      

  }

 

  @After

  public void tearDown() throws Exception {

    driver.quit();

    String verificationErrorString = verificationErrors.toString();

    if (!"".equals(verificationErrorString)) {

      fail(verificationErrorString);

    }

  }

 

  private boolean isElementPresent(By by) {

    try {

      driver.findElement(by);

      return true;

    } catch (NoSuchElementException e) {

      return false;

    }

  }

 

  private boolean isAlertPresent() {

    try {

      driver.switchTo().alert();

      return true;

    } catch (NoAlertPresentException e) {

      return false;

    }

  }

 

  private String closeAlertAndGetItsText() {

    try {

      Alert alert = driver.switchTo().alert();

      String alertText = alert.getText();

      if (acceptNextAlert) {

        alert.accept();

      } else {

        alert.dismiss();

      }

      return alertText;

    } finally {

      acceptNextAlert = true;

    }

  }

}

 

四、        实验结果

通过使用SeleniumIDEMaven,以及编写Selenium Java WebDriver程序,成功的对网页进行了自动化的测试。

 

转载于:https://www.cnblogs.com/superjn/p/5399005.html

相关文章:

  • MySQL中MAX函数与Group By一起使用的注意事项
  • 网易前端JavaScript编码规范
  • BAT面试笔记
  • Architecture.the-reactive-manifesto
  • 一起Polyfill系列:Function.prototype.bind的四个阶段
  • Mybatis 中在传参时,$ 和# 的区别
  • 敏捷方法在测试计划中的应用
  • ARM9学习笔记之——MiniOS
  • 线程同步之条件变量
  • 混合牛奶 | 贪心算法 (USACO练习题)
  • Solarized Scheme
  • Leetcode题目:Symmetric Tree
  • spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。...
  • CodeForces 660C Hard Process
  • 流媒体选择Nginx是福还是祸?
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • Android Studio:GIT提交项目到远程仓库
  • iOS编译提示和导航提示
  • Joomla 2.x, 3.x useful code cheatsheet
  • js如何打印object对象
  • Linux CTF 逆向入门
  • Node 版本管理
  • webpack+react项目初体验——记录我的webpack环境配置
  • win10下安装mysql5.7
  • 初探 Vue 生命周期和钩子函数
  • 记一次用 NodeJs 实现模拟登录的思路
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 手机端车牌号码键盘的vue组件
  • 译米田引理
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 怎么将电脑中的声音录制成WAV格式
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​Python 3 新特性:类型注解
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $forceUpdate()函数
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .Net 应用中使用dot trace进行性能诊断
  • :如何用SQL脚本保存存储过程返回的结果集
  • @JSONField或@JsonProperty注解使用
  • @WebService和@WebMethod注解的用法
  • [《百万宝贝》观后]To be or not to be?
  • [383] 赎金信 js
  • [C++核心编程](四):类和对象——封装
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境
  • [CF407E]k-d-sequence
  • [CF482B]Interesting Array
  • [HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页