Lab2 Report
1、安装SeleniumIDE插件
a)安装
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包结构图: