Software Testing Lab2

Posted zhuchenlu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Software Testing Lab2相关的知识,希望对你有一定的参考价值。

实验内容:

1、安装SeleniumIDE插件

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

3、访问https://psych.liebes.top/st使用学号登录系统(账户名为学号,密码为学号后6位),进入系统后可以看到该同学的git地址。

4、编写Selenium Java WebDriver程序,测试input.xlsx表格中的学号和git地址的对应关系是否正确。

5、将测试代码提交到github上(4月15日23:59:59前)。

实验过程:

(1) 由于本机FireFox版本过新,故安装 FireFox 浏览器,版本为 42.0。并且关闭FireFox的自动更新。

(2) 安装Selenium IDE 插件

技术分享图片

(3) 出现技术分享图片,表明安装成功

Selenium IDE界面如图

 技术分享图片

(4) 打开 Selenium IDE 插件,并开启录制。在浏览器中输入地址 https://psych.liebes.top/st 并进行访问,输入自己的学号和对应的密码后跳转到包含个人信息的页面,关闭录制

 技术分享图片

技术分享图片

技术分享图片 

(5) 点击 “文件->Export Test Case As->Java/Junit4->WebDriver”导出脚本

 技术分享图片

(6) 编写Selenium Java WebDriver程序,测试input.xlsx表格中的学号和git地址的对应关系是否正确。

用ideaIDE新建java项目,将Selenium.java 复制到src目录中。添加相关jar包

代码如下:

package cn.tju.selenium;

 

import static org.junit.Assert.assertEquals;

import static org.junit.Assert.fail;

 

import java.io.File;

import java.io.FileInputStream;

import java.util.Arrays;

import java.util.Collection;

import java.util.NoSuchElementException;

import java.util.concurrent.TimeUnit;

 

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.junit.runners.Parameterized;

import org.openqa.selenium.Alert;

import org.openqa.selenium.By;

import org.openqa.selenium.NoAlertPresentException;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

 

@RunWith(Parameterized.class)

public class Script {

private WebDriver driver;

private String baseUrl;

private boolean acceptNextAlert = true;

private StringBuffer verificationErrors = new StringBuffer();

 

private String testName;

private String testPwd;

private String gitHubUrl;

private Script sc;

 

public Script(String testName, String testPwd, String githubUrl) {

    this.testName = testName;

    this.testPwd = testPwd;

    this.gitHubUrl = githubUrl;

}

 

@Before

public void setUp() throws Exception {

    driver = new FirefoxDriver();

    baseUrl = "https://psych.liebes.top";

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

}

 

@Parameterized.Parameters

public static Collection<Object[]> getData() {

    Object[][] obj = new Object[97][];

    try {

 

        // 指定excel的路径

        File src = new File("input.xlsx");

 

        // 加载文件

        FileInputStream fis = new FileInputStream(src);

 

        // 加载workbook

        @SuppressWarnings("resource")

        XSSFWorkbook wb = new XSSFWorkbook(fis);

 

        // 加载sheet,这里我们只有一个sheet,默认是sheet1

        XSSFSheet sh1 = wb.getSheetAt(0);

        for (int i = 0; i < sh1.getPhysicalNumberOfRows(); i++) {

           obj[i] = new Object[] {

                  sh1.getRow(i).getCell(0).getStringCellValue(),

                  sh1.getRow(i).getCell(0).getStringCellValue()

                         .substring(4),

                  sh1.getRow(i).getCell(1).getStringCellValue() };

 

        }

    } catch (Exception e) {

        e.printStackTrace();

    }

    return Arrays.asList(obj);

}

 

@Test

public void testUntitledTestCase() throws Exception {

    driver.get(baseUrl + "/st");

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

    driver.findElement(By.id("username")).sendKeys(this.testName);

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

    driver.findElement(By.id("password")).sendKeys(this.testPwd);

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

    assertEquals(this.gitHubUrl.trim(),

           driver.findElement(By.cssSelector("p.login-box-msg")).getText()

                  .trim());

}

 

@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;

    }

}

}

运行结果:

 技术分享图片

技术分享图片

 

以上是关于Software Testing Lab2的主要内容,如果未能解决你的问题,请参考以下文章

Software Testing hw3

Software Testing -- Homework 1

Software Testing Concepts

Software Testing Homework1

Software Testing Lab1

Software Testing Homework 2