一、 实验内容
- 安装SeleniumIDE插件
- 学会使用SeleniumIDE录制脚本和导出脚本
- 访问http://www.ncfxy.com使用学号登录系统(账户名为学号,密码为学号后6位),进入系统后可以看到该用户的邮箱。
- 编写Selenium Java WebDriver程序,测试info.csv表格中的学号和邮箱的对应关系是否正确。
- 将测试代码提交到github上。
二、 实验目的
- 了解并掌握SeleniumIDE的使用,利用SeleniumIDE进行网页的自动化测试。
- 利用maven来自动构建测试项目。
- 学会编写Selenium Java WebDriver程序,然后对数据进行测试。
三、 实验过程
- 安装SeleniumIDE插件
首先下载火狐浏览器,并且在工具栏中的Web开发者中下载并安装SeleniumIDE插件。
安装好插件后,浏览器的工具栏会多出一个工具,如下图所示:
- 学会使用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文件的导出。如下图所示:
- 编写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; } } }
四、 实验结果
通过使用SeleniumIDE和Maven,以及编写Selenium Java WebDriver程序,成功的对网页进行了自动化的测试。