做app的模板下载网站有哪些,微山网站建设,品质好的衣服品牌,如何查看网站推广做的好项目地址#xff1a; http://82.156.151.156:8080/login.html 一、系统测试用例
二、测试实现过程
先是根据自己的项目设计了一个 UI 自动化测试用例, 然后根据这个测试用例使用了 selenium4自动化测试工具和 JUnit5单元测试框架结合实现的 web 自动化测试.。 测试模块划分…项目地址 http://82.156.151.156:8080/login.html 一、系统测试用例
二、测试实现过程
先是根据自己的项目设计了一个 UI 自动化测试用例, 然后根据这个测试用例使用了 selenium4自动化测试工具和 JUnit5单元测试框架结合实现的 web 自动化测试.。 测试模块划分为三个有三个包, 一个包下的类是工具类, 主要是用来创建驱动对象的, 避免在自动化测试的时候, 每次都要创建驱动对象. 另一个 包是放测试用例的, 一个页面一个测试类, 最后一个包是个测试套件通过测试套件把测试类全部都加进去。
三、测试亮点
1 使用了 JUnit中提供的注解, 避免生成过多的对象, 造成资源和时间的浪费, 提高了自动化的执行效率 2只创建了一次驱动对象, 避免每个用例重复创建驱动对象造成时间和资源的浪费 3用例使用了参数化注解保持用例的简洁, 提高代码的可读性 4使用了测试套件, 降低了测试人员的工作量, 通过套件既可以指定哪些测试类需要运行, 也可以一次执行所有要运行的测试用例 5 使用了屏幕截图, 方便问题的追溯以及问题的解决 6 使用了等待, 如当页面发生跳转的时候, 或者页面还没来得及渲染的时候, 获取页面元素, 就会出现元素找不到的异常, 而这可能不是一个 bug, 所以需要加上隐式等待,提高了自动化的稳定性。
四、测试前准备工作
1.写好测试用例 2.准备好测试数据 3.创建测试环境 11. 创建一个 Maven 项目 2导入自动化测试需要的相关依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.1/version !-- 替换为你需要的版本号 --scopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --dependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-java/artifactIdversion3.4.0/version/dependencydependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion25.0-jre/version/dependencydependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.8.2/versionscopetest/scope/dependencydependencygroupIdorg.junit.platform/groupIdartifactIdjunit-platform-suite/artifactIdversion1.8.2/versionscopetest/scope/dependency3创建包管理自己后续要写的代码。
四、写自动化测试代码 1.工具类 1创建驱动对象, 提供给其他页面使用 2创建隐式等待, 作用于软件测试的整个生命周期 3创建截图保存的路径 4提供屏幕截图的方法, 以及保存截图的格式。
public class AutoTestUtils {public static EdgeDriver driver;// 创建驱动对象public static EdgeDriver getDriver() {System.setProperty(webdriver.edge.driver, msedgedriver.exe);if(driver null) {driver new EdgeDriver();}// 创建隐式等待作用于driver的整个生命周期 (10秒)//Duration.ofSeconds(10) 创建了一个持续时间对象表示等待时间为10秒。然后通过调用 toMillis() 方法将持续时间转换为毫秒数。// 最后使用 TimeUnit.MILLISECONDS 将毫秒作为单位传递给 implicitlyWait() 方法。driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10).toMillis(), TimeUnit.MILLISECONDS);return driver;}// 屏幕截图, 保存文件的格式//获取当前时间并将其格式化为指定的文件名和文件夹名public ListString getTime() {// 文件夹按照天数的维度进行保存// 文件格式 2023-4-3 20:07SimpleDateFormat sim1 new SimpleDateFormat(yyyyMMdd-HHmmssSS);//年月日时分秒SimpleDateFormat sim2 new SimpleDateFormat(yyyy-MM-dd);//年月日String filename sim1.format(System.currentTimeMillis());//文件名String dirname sim2.format(System.currentTimeMillis());//文件夹名// 创建一个包含文件夹名和文件名的列表ListString list new ArrayList();list.add(dirname);list.add(filename);return list;}// 屏幕截图的方法public void getScreenShotAs(String str) throws IOException {// 调用 getTime() 方法获取当前日期和时间的列表ListString list getTime();// 构建截图文件的路径String filePath ./src/test/java/com/example/student_manage_test/list.get(0)/str_list.get(1).png;// 获取页面截图并保存为文件//OutputType.FILE 是一个枚举类型表示捕获页面截图的输出类型为文件。File srcFile driver.getScreenshotAs(OutputType.FILE);//从源文件复制到指定路径下FileUtils.copyFile(srcFile, new File(filePath));}}5释放驱动
SpringBootTest
public class DriverQuitTest extends AutoTestUtils {public static EdgeDriver driver;//停止 WebDriver 的操作并释放相关资源Testpublic void driverQuit() {driver getDriver();driver.quit();}
}2.测试登录界面
TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LoginTest extends AutoTestUtils {public static EdgeDriver driver;BeforeAllpublic static void baseController() {driver getDriver();driver.get(http://82.156.151.156:8080/login.html);}/*** 检查登录页面是否正常打开* 检查登录页的登录用户名密码等字样是否出现*/TestOrder(1)//标记方法在测试执行时的顺序public void loginPageLoadRight() throws IOException {// 查找登录页面标题元素的 CSS 选择器driver.findElement(By.id(loginname));// 查找登录页面的第一个提示信息元素的 XPathdriver.findElement(By.id(password));// 查找登录页面的第二个提示信息元素的 XPathdriver.findElement(By.cssSelector(#submit));// 对当前页面进行截图getScreenShotAs(getClass().getName());}/*** 检查异常登录的情况 4 种情况* 1账号密码错误* 账号密码错误, 会弹窗提示*/ParameterizedTestCsvSource({admin,345, zhangsan,111, lucy,111})Order(2)public void loginFail(String loginname, String password) throws InterruptedException, IOException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 登录步骤driver.findElement(By.id(loginname)).sendKeys(loginname);driver.findElement(By.id(password)).sendKeys(password);driver.findElement(By.cssSelector(#submit)).click();// 检测登录失败的场景// 切换到弹窗, 进行弹窗的处理(隐式等待不生效,不得不加入强制等待)//等待时间WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(用户名或密码错误请重试));driver.switchTo().alert().accept();//截图getScreenShotAs(getClass().getName());}/*** 2未输入密码** param loginname 登录名* throws InterruptedException*/ParameterizedTestValueSource(strings {张三})Order(3)public void loginFail2(String loginname) throws InterruptedException, IOException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 登录步骤driver.findElement(By.id(loginname)).sendKeys(loginname);driver.findElement(By.cssSelector(#submit)).click();// 检测登录失败的场景// 切换到弹窗, 进行弹窗的处理Thread.sleep(100);Alert alert driver.switchTo().alert();// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(请先输入密码));alert.accept();getScreenShotAs(getClass().getName());}/*** 未输入用户名** param password 密码* throws InterruptedException*/ParameterizedTestValueSource(strings {111})Order(4)public void loginFail3(String password) throws InterruptedException, IOException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 登录步骤driver.findElement(By.id(password)).sendKeys(password);driver.findElement(By.cssSelector(#submit)).click();// 检测登录失败的场景// 切换到弹窗, 进行弹窗的处理Thread.sleep(100);Alert alert driver.switchTo().alert();// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(请先输入用户名));alert.accept();getScreenShotAs(getClass().getName());}/*** 账号,, 密码都没有输入** throws InterruptedException*/TestOrder(5)public void loginFail4() throws InterruptedException, IOException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();driver.findElement(By.cssSelector(#submit)).click();// 检测登录失败的场景// 切换到弹窗, 进行弹窗的处理Thread.sleep(100);Alert alert driver.switchTo().alert();// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(请先输入用户名));// 警告弹窗alert.accept();getScreenShotAs(getClass().getName());}/*** 检查正常登录的情况* 页面是否显示登录名, 密码, 提交字样*///ParameterizedTest指示一个测试方法是参数化测试方法,CsvSource指定参数化测试方法的参数来源为 CSV 格式的数据源。ParameterizedTestCsvSource({admin,admin})Order(6)public void loginSuccess(String logianname, String password) throws IOException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 登录步骤driver.findElement(By.id(loginname)).sendKeys(logianname);driver.findElement(By.id(password)).sendKeys(password);driver.findElement(By.cssSelector(#submit)).click();//等待时间WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(登录成功));driver.switchTo().alert().accept();getScreenShotAs(getClass().getName());// 一个用户测试完了,需要进行回退driver.navigate().back();}
}3.测试学生列表界面
SpringBootTest
public class ListTest extends AutoTestUtils {public static EdgeDriver driver;BeforeAllpublic static void baseController() {driver getDriver();driver.get(http://82.156.151.156:8080/login.html);}/*** 登录后学生列表列表页可以正常显示*/Testpublic void MyListPageLoadRight() throws IOException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 先登录driver.findElement(By.id(loginname)).sendKeys(admin);driver.findElement(By.id(password)).sendKeys(admin);driver.findElement(By.cssSelector(#submit)).click();// 接收弹窗WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();// 使用适当的定位器(By)查询目标元素ListWebElement elements driver.findElements(By.xpath(//*[id\info\]/tr[1]));// 验证查询结果是否为空assertTrue(elements.size() 0);getScreenShotAs(getClass().getName());driver.navigate().back();}}4.测试查询功能
TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class SelectTest extends AutoTestUtils {BeforeAllpublic static void baseController() {driver getDriver();driver.get(http://82.156.151.156:8080/login.html);}/*** 查询学生通过姓名*/TestOrder(1)public void selectByStuname() throws IOException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 先登录driver.findElement(By.id(loginname)).sendKeys(admin);driver.findElement(By.id(password)).sendKeys(admin);driver.findElement(By.cssSelector(#submit)).click();// 接收弹窗WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();//传入参数driver.findElement(By.id(ipt_name)).sendKeys(超级管理员);driver.findElement(By.id(submit1)).click();// 使用适当的定位器(By)查询目标元素ListWebElement elements driver.findElements(By.xpath(//*[id\info\]/tr/th[3]));// 验证查询结果是否为空assertTrue(elements.size() 0);//截图getScreenShotAs(getClass().getName());}/*** 查询学生通过籍贯*/TestOrder(2)public void selectByAddress() throws IOException {driver.findElement(By.id(ipt_name)).clear();driver.findElement(By.id(ipt_address)).clear();driver.findElement(By.id(ipt_stunum)).clear();//传入参数driver.findElement(By.id(ipt_address)).sendKeys(北京);driver.findElement(By.id(submit1)).click();// 使用适当的定位器(By)查询目标元素ListWebElement elements driver.findElements(By.xpath(//*[id\info\]/tr[1]/th[6]));// 验证查询结果是否为空assertTrue(elements.size() 0);//截图getScreenShotAs(getClass().getName());}/*** 查询学生通过学号*/TestOrder(3)public void selectByStunum() throws IOException {driver.findElement(By.id(ipt_name)).clear();driver.findElement(By.id(ipt_address)).clear();driver.findElement(By.id(ipt_stunum)).clear();//传入参数driver.findElement(By.id(ipt_stunum)).sendKeys(2002);driver.findElement(By.id(submit1)).click();// 使用适当的定位器(By)查询目标元素ListWebElement elements driver.findElements(By.xpath(//*[id\info\]/tr/th[8]));// 验证查询结果是否为空assertTrue(elements.size() 0);//截图getScreenShotAs(getClass().getName());}/*** 查询学生通过姓名和籍贯*/TestOrder(4)public void selectByStuname_Address() throws IOException {driver.findElement(By.id(ipt_name)).clear();driver.findElement(By.id(ipt_address)).clear();driver.findElement(By.id(ipt_stunum)).clear();//传入参数driver.findElement(By.id(ipt_name)).sendKeys(超级管理员);driver.findElement(By.id(ipt_address)).sendKeys(成都);driver.findElement(By.id(submit1)).click();// 使用适当的定位器(By)查询目标元素ListWebElement elements driver.findElements(By.xpath(//*[id\info\]/tr/th[3]));// 验证查询结果是否为空assertTrue(elements.size() 0);//截图getScreenShotAs(getClass().getName());}/*** 查询学生通过姓名、籍贯和学号*/TestOrder(5)public void selectByStuname_Address_Stunum() throws IOException {driver.findElement(By.id(ipt_name)).clear();driver.findElement(By.id(ipt_address)).clear();driver.findElement(By.id(ipt_stunum)).clear();//传入参数driver.findElement(By.id(ipt_name)).sendKeys(超级管理员);driver.findElement(By.id(ipt_address)).sendKeys(成都);driver.findElement(By.id(ipt_stunum)).sendKeys(10000);driver.findElement(By.id(submit1)).click();// 使用适当的定位器(By)查询目标元素ListWebElement elements driver.findElements(By.xpath(//*[id\info\]/tr[1]/th[3]));// 验证查询结果是否为空assertTrue(elements.size() 0);//截图getScreenShotAs(getClass().getName());driver.navigate().back();}}5.测试添加功能
TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class AddTest extends AutoTestUtils {BeforeAllpublic static void baseSetup() {driver getDriver();driver.get(http://82.156.151.156:8080/login.html);}/*** 添加用户成功测试* throws IOException*/Order(1)ParameterizedTestCsvSource({李四,李四,111,111,20,1873234890819,2007})public void addStudentSuccess(String loginname, String stuname, String password, String password2, int age,String phone,String stunum) throws IOException, InterruptedException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 先登录driver.findElement(By.id(loginname)).sendKeys(admin);driver.findElement(By.id(password)).sendKeys(admin);driver.findElement(By.cssSelector(#submit)).click();// 接收弹窗WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();// 点击添加用户按钮driver.findElement(By.id(add_student)).click();driver.findElement(By.id(loginname)).sendKeys(loginname);driver.findElement(By.id(stuname)).sendKeys(stuname);driver.findElement(By.id(password)).sendKeys(password);driver.findElement(By.id(password2)).sendKeys(password2);driver.findElement(By.id(age)).sendKeys(String.valueOf(age));driver.findElement(By.id(phone)).sendKeys(phone);driver.findElement(By.id(stunum)).sendKeys(stunum);driver.findElement(By.id(btn_sub)).click();wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(添加成功));driver.switchTo().alert().accept();driver.switchTo().alert().dismiss();getScreenShotAs(getClass().getName());}/*** 添加用户失败测试-登录名重复* throws IOException*/Order(2)ParameterizedTestCsvSource({超级管理员,张三,111,111,20,2011})public void addStudentFail1(String loginname, String stuname, String password, String password2, int age, String stunum) throws IOException, InterruptedException {// 点击添加用户按钮driver.findElement(By.id(add_student)).click();// 检查添加页面是否打开driver.findElement(By.id(loginname)).sendKeys(loginname);driver.findElement(By.id(stuname)).sendKeys(stuname);driver.findElement(By.id(password)).sendKeys(password);driver.findElement(By.id(password2)).sendKeys(password2);driver.findElement(By.id(age)).sendKeys(String.valueOf(age));driver.findElement(By.id(stunum)).sendKeys(stuname);driver.findElement(By.id(btn_sub)).click();WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(添加失败请重试));driver.switchTo().alert().accept();getScreenShotAs(getClass().getName());}/*** 添加用户失败测试-学号重复* throws IOException*/Order(3)ParameterizedTestCsvSource({小黑,小黑,111,111,20,10000})public void addStudentFail2(String loginname, String stuname, String password, String password2, int age, String stunum) throws IOException, InterruptedException {// 点击添加用户按钮driver.findElement(By.id(add_student)).click();// 检查添加页面是否打开driver.findElement(By.id(loginname)).sendKeys(loginname);driver.findElement(By.id(stuname)).sendKeys(stuname);driver.findElement(By.id(password)).sendKeys(password);driver.findElement(By.id(password2)).sendKeys(password2);driver.findElement(By.id(age)).sendKeys(String.valueOf(age));driver.findElement(By.id(stunum)).sendKeys(stunum);driver.findElement(By.id(btn_sub)).click();WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(添加失败请重试));driver.switchTo().alert().accept();getScreenShotAs(getClass().getName());driver.navigate().back();driver.navigate().back();}
}6.测试修改功能
TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class UpdateTest extends AutoTestUtils {BeforeAllpublic static void baseSetup() {driver getDriver();driver.get(http://82.156.151.156:8080/login.html);}/*** 更新用户成功测试--1.修改姓名* throws IOException*/Order(1)ParameterizedTestCsvSource({小红})public void UpdateStudentSuccess1(String stuname ) throws IOException, InterruptedException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 先登录driver.findElement(By.id(loginname)).sendKeys(admin);driver.findElement(By.id(password)).sendKeys(admin);driver.findElement(By.cssSelector(#submit)).click();// 接收弹窗WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();// 找到要修改的行WebElement row driver.findElement(By.xpath(//*[id\info\]/tr[3]));// 找到修改按钮元素WebElement deleteButton row.findElement(By.xpath(//*[id\info\]/tr[3]/th[10]/a[1]));// 点击修改按钮deleteButton.click();driver.findElement(By.id(stuname)).clear();driver.findElement(By.id(stuname)).sendKeys(stuname);driver.findElement(By.id(btn_sub)).click();wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(修改成功));driver.switchTo().alert().accept();getScreenShotAs(getClass().getName());}/*** 更新用户成功测试--2.修改密码* throws IOException*/Order(2)ParameterizedTestCsvSource({111,111})public void UpdateStudentSuccess2(String password,String password2 ) throws IOException, InterruptedException {// 找到要修改的行WebElement row driver.findElement(By.xpath(//*[id\info\]/tr[3]));// 找到修改按钮元素WebElement deleteButton row.findElement(By.xpath(//*[id\info\]/tr[3]/th[10]/a[1]));// 点击修改按钮deleteButton.click();driver.findElement(By.id(password)).sendKeys(password);driver.findElement(By.id(password2)).sendKeys(password2);driver.findElement(By.id(btn_sub)).click();WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(修改成功));driver.switchTo().alert().accept();getScreenShotAs(getClass().getName());}/*** 更新用户失败测试--1.未输姓名* throws IOException*/TestOrder(3)public void UpdateStudentFail() throws IOException, InterruptedException {// 找到要修改的行WebElement row driver.findElement(By.xpath(//*[id\info\]/tr[3]));// 找到修改按钮元素WebElement deleteButton row.findElement(By.xpath(//*[id\info\]/tr[3]/th[10]/a[1]));// 点击修改按钮deleteButton.click();driver.findElement(By.id(stuname)).clear();driver.findElement(By.id(btn_sub)).click();WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();assertTrue(alertText.contains(请先输入));driver.switchTo().alert().accept();getScreenShotAs(getClass().getName());}//更新用户失败测试--2.登录名和学号是唯一的在写代码时这两个值不能改所以不用测试}7.测试删除功能 1删除单条
SpringBootTest
public class DeleteOneTest extends AutoTestUtils {BeforeAllpublic static void baseSetup() {driver getDriver();driver.get(http://82.156.151.156:8080/login.html);}/*** 删除单个用户测试* throws IOException*/Testpublic void deleteStudentOne() throws IOException, InterruptedException {// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 先登录driver.findElement(By.id(loginname)).sendKeys(admin);driver.findElement(By.id(password)).sendKeys(admin);driver.findElement(By.cssSelector(#submit)).click();// 接收弹窗WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();// 随便找一行删除// 找到要删除的行WebElement row driver.findElement(By.xpath(//*[id\info\]/tr[3]));// 找到删除按钮元素WebElement deleteButton row.findElement(By.xpath(//*[id\info\]/tr[3]/th[10]/a[2]));// 点击删除按钮deleteButton.click();//处理确认删除的弹框wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();//处理删除成功的弹窗wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(删除成功));driver.switchTo().alert().accept();getScreenShotAs(getClass().getName());}
}2删除选中
public class DeleteMoreTest extends AutoTestUtils {BeforeAllpublic static void baseSetup() {driver getDriver();driver.get(http://82.156.151.156:8080/login.html);}Testpublic void deleteMoreStudent(){// 登录之前先清空用户名和密码driver.findElement(By.id(loginname)).clear();driver.findElement(By.id(password)).clear();// 先登录driver.findElement(By.id(loginname)).sendKeys(admin);driver.findElement(By.id(password)).sendKeys(admin);driver.findElement(By.cssSelector(#submit)).click();// 接收弹窗WebDriverWait wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();// 找到要删除的行WebElement row1 driver.findElement(By.xpath(//*[id\info\]/tr[2]));// 找到这行选中框WebElement deleteButton1 row1.findElement(By.xpath(//*[id\info\]/tr[2]/th[1]));// 点击删除按钮deleteButton1.click();// 找到要删除的行WebElement row2 driver.findElement(By.xpath(//*[id\info\]/tr[3]));// 找到这行选中框WebElement deleteButton2 row2.findElement(By.xpath(//*[id\info\]/tr[3]/th[1]));// 点击删除按钮deleteButton2.click();driver.findElement(By.xpath(//*[id\delete\])).click(); // 点击批量删除按钮//处理确认删除的弹框wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());driver.switchTo().alert().accept();//处理删除成功的弹窗wait new WebDriverWait(driver, 10);wait.until(ExpectedConditions.alertIsPresent());// 获取提示框的文本String alertText driver.switchTo().alert().getText();// 验证文本是否包含了添加成功assertTrue(alertText.contains(选中删除成功));driver.switchTo().alert().accept();}
}8.测试套件
//测试登录、列表页、查询功能、添加功能、修改功能、删除单条和删除选中功能
Suite
SelectClasses({LoginTest.class, ListTest.class, SelectTest.class, AddTest.class, UpdateTest.class,DeleteOneTest.class, DeleteMoreTest.class,DriverQuitTest.class })
public class RunSuite1 {
}五、测试结果
1测试通过率 2测试截图