Lab2 Report

1、安装SeleniumIDE插件

a)安装Firefox 17.0 - 56.*版本的firefox,下载地址为:http://ftp.mozilla.org/pub/firefox/releases/  ;

b)在firefox-->菜单-->附加组件的搜索栏中输入“selenium IDE”;

c)在搜索结果中找到如图所示的插件,单击之;

d)在页面中找到如图所示的超链接,单击之;

e)如图所示找到2.9版本,添加至firefox;

f)重启,安装完成。

 

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

a)在firefox中启动selenium ide;

b)如图所示进行操作;

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

a)关键源代码:

  1 package cn.tju.selenium;
  2 
  3 import java.io.BufferedWriter;
  4 import java.io.File;
  5 import java.io.FileInputStream;
  6 import java.io.FileWriter;
  7 import java.util.regex.Pattern;
  8 import java.util.concurrent.TimeUnit;
  9 
 10 import org.apache.poi.xssf.usermodel.XSSFSheet;
 11 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 12 import org.junit.*;
 13 
 14 import static org.junit.Assert.*;
 15 import static org.hamcrest.CoreMatchers.*;
 16 
 17 import org.openqa.selenium.*;
 18 import org.openqa.selenium.firefox.FirefoxDriver;
 19 import org.openqa.selenium.support.ui.Select;
 20 
 21 public class Script {
 22     private WebDriver driver;
 23     private String baseUrl;
 24     private boolean acceptNextAlert = true;
 25     private StringBuffer verificationErrors = new StringBuffer();
 26 
 27     @Before
 28     public void setUp() throws Exception {
 29         driver = new FirefoxDriver();
 30         baseUrl = "https://psych.liebes.top/";
 31         driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
 32     }
 33 
 34     @Test
 35     public void testScript() throws Exception {
 36 
 37         try {
 38             /* 写入Txt文件 */
 39             File writename = new File("output.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
 40             writename.createNewFile(); // 创建新文件
 41             BufferedWriter out = new BufferedWriter(new FileWriter(writename));
 42 
 43             out.write("   学号                  原URL                                excel表中URL\r\n");
 44             out.flush(); // 把缓存区内容压入文件
 45 
 46             // 指定excel的路径
 47             File src = new File("input.xlsx");
 48 
 49             // 加载文件
 50             FileInputStream fis = new FileInputStream(src);
 51 
 52             // 加载workbook
 53             @SuppressWarnings("resource")
 54             XSSFWorkbook wb = new XSSFWorkbook(fis);
 55 
 56             // 加载sheet,这里我们只有一个sheet,默认是sheet1
 57             XSSFSheet sh1 = wb.getSheetAt(0);
 58 
 59             for (int i = 0; i < sh1.getPhysicalNumberOfRows(); i++) {
 60 
 61                 driver.get(baseUrl + "/st");
 62                 driver.findElement(By.id("username")).clear();
 63                 driver.findElement(By.id("username")).sendKeys(
 64                         sh1.getRow(i).getCell(0).getStringCellValue());
 65                 driver.findElement(By.id("password")).clear();
 66                 driver.findElement(By.id("password")).sendKeys(
 67                         sh1.getRow(i).getCell(0).getStringCellValue()
 68                                 .substring(4));
 69 
 70                 driver.findElement(By.id("submitButton")).click();
 71                 if (sh1.getRow(i)
 72                         .getCell(1)
 73                         .getStringCellValue()
 74                         .trim()
 75                         .equals(driver
 76                                 .findElement(By.cssSelector("p.login-box-msg"))
 77                                 .getText().trim())) {
 78                     System.out.println("Success-"
 79                             + sh1.getRow(i).getCell(0).getStringCellValue());
 80                 } else {
 81                     System.out.println("Failed-"
 82                             + sh1.getRow(i).getCell(0).getStringCellValue());
 83                     out.write(sh1.getRow(i).getCell(0).getStringCellValue()
 84                             + "     "
 85                             + String.format(
 86                                     "%-40s",
 87                                     driver.findElement(
 88                                             By.cssSelector("p.login-box-msg"))
 89                                             .getText())
 90                             + String.format("%-40s", sh1.getRow(i).getCell(1)
 91                                     .getStringCellValue()) + "\r\n"); // \r\n即为换行
 92                     out.flush(); // 把缓存区内容压入文件
 93                 }
 94 
 95             }
 96             out.close(); // 最后记得关闭文件
 97         } catch (Exception e) {
 98             System.out.println(e.getMessage());
 99         }
100 
101     }
102 
103     @After
104     public void tearDown() throws Exception {
105         driver.quit();
106         String verificationErrorString = verificationErrors.toString();
107         if (!"".equals(verificationErrorString)) {
108             fail(verificationErrorString);
109         }
110     }
111 
112     private boolean isElementPresent(By by) {
113         try {
114             driver.findElement(by);
115             return true;
116         } catch (NoSuchElementException e) {
117             return false;
118         }
119     }
120 
121     private boolean isAlertPresent() {
122         try {
123             driver.switchTo().alert();
124             return true;
125         } catch (NoAlertPresentException e) {
126             return false;
127         }
128     }
129 
130     private String closeAlertAndGetItsText() {
131         try {
132             Alert alert = driver.switchTo().alert();
133             String alertText = alert.getText();
134             if (acceptNextAlert) {
135                 alert.accept();
136             } else {
137                 alert.dismiss();
138             }
139             return alertText;
140         } finally {
141             acceptNextAlert = true;
142         }
143     }
144 }

 

b)git项目地址:https://github.com/lvjunsetup/SowareTestLab2

c)实验结果:

d)所有不匹配的结果:

 

 

附: 所需依赖的jar包下载地址: https://pan.baidu.com/s/1XNsWpGKSqDKs-zvFnQvFkg

项目依赖jar包结构图:

posted @ 2018-04-12 18:02  豪客迈斯  阅读(227)  评论(0编辑  收藏  举报