0


博客系统项目的自动化测试

作者:~小明学编程

文章专栏:测试开发

格言:热爱编程的,终将被编程所厚爱。
在这里插入图片描述

博客界面

测试用例

界面测试

功能测试

性能测试

兼容性测试

易用性测试

安全性测试

自动化测试

下面我们就对上面的部分用例进行自动化的测试。

登录界面的测试

首先我们要先准备好驱动,这里我们采用懒汉模式,然后就是start()方法,该方法我们在所有的测试方法之前执行一次,然后还有close()方法用于关闭浏览器回收驱动,用于在所有的测试方法执行之前来执行。

界面文字模块

该模块用于测试我们的登录界面的一些文字信息是否正确。

  1. @Test
  2. @Order(1)
  3. //先对我们登录界面的一些文字描述进行测试
  4. public void appearance() {
  5. start();
  6. //检测系统名称是否正确
  7. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  8. Assertions.assertEquals("我的博客系统",str1);
  9. //主页,和写博客是否正常
  10. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  11. Assertions.assertEquals("主页",str2);
  12. //登录窗口的内容
  13. String str3 = driver.findElement(By.cssSelector("body > div.login-container > form > div > h3")).getText();
  14. Assertions.assertEquals("登录",str3);
  15. String str4 = driver.findElement(By.cssSelector
  16. ("body > div.login-container > form > div > div:nth-child(2) > span")).getText();
  17. Assertions.assertEquals("用户名",str4);
  18. String str5 = driver.findElement(By.cssSelector("body > div.login-container > form > div > div:nth-child(3) > span")).getText();
  19. Assertions.assertEquals("密码",str5);
  20. String str6 = driver.findElement(By.cssSelector("#submit")).getAttribute("value");
  21. Assertions.assertEquals("提交",str6);
  22. }

测试窗口伸缩

  1. @Test
  2. @Order(2)
  3. //测试窗口是否能正常的伸缩
  4. public void windowSize() {
  5. driver.manage().window().maximize();
  6. driver.manage().window().minimize();
  7. driver.manage().window().setSize(new Dimension(1000,800));//自定义大小
  8. }

测试错误登录案例

测试错误登录案例这里分为两种一种是账号密码不为空但是不完全正确,还有一种就是账号或者密码存在空值的情况。

  1. @Order(3)
  2. @ParameterizedTest
  3. @CsvSource(value = {"11,22","2334,4566","张三,李四","王五,123"})//分别针对错误账号密码,空账号和空密码进行验证
  4. //验证我们的错误登录,我们输入几种错误的案例
  5. public void falseLogin(String name,String password) throws InterruptedException {
  6. driver.findElement(By.cssSelector("#username")).clear();
  7. //处理用户名为空的情况
  8. driver.findElement(By.cssSelector("#username")).sendKeys(name);
  9. driver.findElement(By.cssSelector("#password")).clear();
  10. driver.findElement(By.cssSelector("#password")).sendKeys(password);
  11. driver.findElement(By.cssSelector("#submit")).click();
  12. String test = driver.findElement(By.cssSelector("body")).getText();
  13. Assertions.assertEquals("用户名或密码错误!",test);
  14. driver.navigate().back();//跳转回上一个界面
  15. }
  16. @Order(4)
  17. @ParameterizedTest
  18. @CsvSource(value = {",","123,",",123"})//分别针对空账号空密码,空账号和空密码进行测试
  19. //验证我们的错误登录,我们输入几种错误的案例
  20. public void nullLogin(String name,String password) throws InterruptedException {
  21. driver.findElement(By.cssSelector("#username")).clear();
  22. //处理用户名为空的情况
  23. if (name!=null) {
  24. driver.findElement(By.cssSelector("#username")).sendKeys(name);
  25. }
  26. driver.findElement(By.cssSelector("#password")).clear();
  27. if (password!=null) {
  28. driver.findElement(By.cssSelector("#password")).sendKeys(password);
  29. }
  30. driver.findElement(By.cssSelector("#submit")).click();
  31. String test = driver.findElement(By.cssSelector("body")).getText();
  32. Assertions.assertEquals("当前用户名或密码为空!",test);
  33. driver.navigate().back();//跳转回上一个界面
  34. }

测试正确的登录案例

  1. @Order(5)
  2. @ParameterizedTest
  3. @CsvSource(value = {"aaa,123","bbb,456"})
  4. //验证我们密码正确的情况
  5. public void trueLogin(String name,String password) throws InterruptedException {
  6. driver.findElement(By.cssSelector("#username")).clear();
  7. driver.findElement(By.cssSelector("#username")).sendKeys(name);
  8. driver.findElement(By.cssSelector("#password")).clear();
  9. driver.findElement(By.cssSelector("#password")).sendKeys(password);
  10. driver.findElement(By.cssSelector("#submit")).click();
  11. String test = driver.findElement(By.cssSelector("body")).getText();
  12. driver.navigate().back();//跳转回上一个界面
  13. }

整体代码

  1. package blogsystem;
  2. import org.junit.jupiter.api.*;
  3. import org.junit.jupiter.params.ParameterizedTest;
  4. import org.junit.jupiter.params.provider.CsvSource;
  5. import org.openqa.selenium.By;
  6. import org.openqa.selenium.Dimension;
  7. import org.openqa.selenium.chrome.ChromeDriver;
  8. import java.time.Duration;
  9. /**
  10. * Created with IntelliJ IDEA.
  11. * Description:
  12. * User: 86184
  13. * Date: 2023-01-22
  14. * Time: 15:51
  15. */
  16. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  17. public class LoginTest {
  18. private static ChromeDriver driver;
  19. //这里我们采用懒汉模式
  20. private static ChromeDriver getDriver() {
  21. if (driver == null) {
  22. driver = new ChromeDriver();
  23. //隐式等待
  24. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
  25. }
  26. return driver;
  27. }
  28. @BeforeAll
  29. public static void start() {
  30. driver = getDriver();
  31. driver.get("http://101.42.54.191:8080/blog_system/blog_login.html");
  32. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  33. }
  34. @Test
  35. @Order(1)
  36. //先对我们登录界面的一些文字描述进行测试
  37. public void appearance() {
  38. start();
  39. //检测系统名称是否正确
  40. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  41. Assertions.assertEquals("我的博客系统",str1);
  42. //主页,和写博客是否正常
  43. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  44. Assertions.assertEquals("主页",str2);
  45. //登录窗口的内容
  46. String str3 = driver.findElement(By.cssSelector("body > div.login-container > form > div > h3")).getText();
  47. Assertions.assertEquals("登录",str3);
  48. String str4 = driver.findElement(By.cssSelector
  49. ("body > div.login-container > form > div > div:nth-child(2) > span")).getText();
  50. Assertions.assertEquals("用户名",str4);
  51. String str5 = driver.findElement(By.cssSelector("body > div.login-container > form > div > div:nth-child(3) > span")).getText();
  52. Assertions.assertEquals("密码",str5);
  53. String str6 = driver.findElement(By.cssSelector("#submit")).getAttribute("value");
  54. Assertions.assertEquals("提交",str6);
  55. }
  56. @Test
  57. @Order(2)
  58. //测试窗口是否能正常的伸缩
  59. public void windowSize() {
  60. driver.manage().window().maximize();
  61. driver.manage().window().minimize();
  62. driver.manage().window().setSize(new Dimension(1000,800));//自定义大小
  63. }
  64. // @Test
  65. @Order(3)
  66. @ParameterizedTest
  67. @CsvSource(value = {"11,22","2334,4566","张三,李四","王五,123"})//分别针对错误账号密码,空账号和空密码进行验证
  68. //验证我们的错误登录,我们输入几种错误的案例
  69. public void falseLogin(String name,String password) throws InterruptedException {
  70. driver.findElement(By.cssSelector("#username")).clear();
  71. //处理用户名为空的情况
  72. driver.findElement(By.cssSelector("#username")).sendKeys(name);
  73. driver.findElement(By.cssSelector("#password")).clear();
  74. driver.findElement(By.cssSelector("#password")).sendKeys(password);
  75. driver.findElement(By.cssSelector("#submit")).click();
  76. String test = driver.findElement(By.cssSelector("body")).getText();
  77. Assertions.assertEquals("用户名或密码错误!",test);
  78. driver.navigate().back();//跳转回上一个界面
  79. }
  80. @Order(4)
  81. @ParameterizedTest
  82. @CsvSource(value = {",","123,",",123"})//分别针对空账号空密码,空账号和空密码进行测试
  83. //验证我们的错误登录,我们输入几种错误的案例
  84. public void nullLogin(String name,String password) throws InterruptedException {
  85. driver.findElement(By.cssSelector("#username")).clear();
  86. //处理用户名为空的情况
  87. if (name!=null) {
  88. driver.findElement(By.cssSelector("#username")).sendKeys(name);
  89. }
  90. driver.findElement(By.cssSelector("#password")).clear();
  91. if (password!=null) {
  92. driver.findElement(By.cssSelector("#password")).sendKeys(password);
  93. }
  94. driver.findElement(By.cssSelector("#submit")).click();
  95. String test = driver.findElement(By.cssSelector("body")).getText();
  96. Assertions.assertEquals("当前用户名或密码为空!",test);
  97. driver.navigate().back();//跳转回上一个界面
  98. }
  99. @Order(5)
  100. @ParameterizedTest
  101. @CsvSource(value = {"aaa,123","bbb,456"})
  102. //验证我们密码正确的情况
  103. public void trueLogin(String name,String password) throws InterruptedException {
  104. driver.findElement(By.cssSelector("#username")).clear();
  105. driver.findElement(By.cssSelector("#username")).sendKeys(name);
  106. driver.findElement(By.cssSelector("#password")).clear();
  107. driver.findElement(By.cssSelector("#password")).sendKeys(password);
  108. driver.findElement(By.cssSelector("#submit")).click();
  109. String test = driver.findElement(By.cssSelector("body")).getText();
  110. driver.navigate().back();//跳转回上一个界面
  111. }
  112. @AfterAll
  113. //所有的测试完了之后关闭驱动
  114. public static void close() throws InterruptedException {
  115. Thread.sleep(2000);
  116. driver.quit();
  117. }
  118. }

博客列表页测试

在博客列表页中我们主要测试当前列表中的各个文字的显示是否正确,测试对其它页面的跳转是否正常。

界面文字模块的测试

  1. @Test
  2. @Order(1)
  3. //先对我们登录界面的一些文字描述进行测试
  4. public void appearance() {
  5. login();
  6. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  7. //检测系统名称是否正确
  8. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  9. Assertions.assertEquals("我的博客系统",str1);
  10. //主页,和写博客是否正常
  11. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  12. Assertions.assertEquals("主页",str2);
  13. String str3 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).getText();
  14. Assertions.assertEquals("注销",str3);
  15. String str4 = driver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
  16. Assertions.assertEquals("aaa",str4);//验证用户名
  17. //验证标签内容是否正确
  18. String str5 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(1)")).getText();
  19. Assertions.assertEquals("文章",str5);
  20. String str6 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(2)")).getText();
  21. Assertions.assertEquals("分类",str6);
  22. String str7 = driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.title")).getText();
  23. Assertions.assertEquals("这是第一篇博客",str7);
  24. String str8 = driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.date")).getText();
  25. Assertions.assertEquals("2023-01-14 15:04:13",str8);
  26. String str9 = driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).getText();
  27. Assertions.assertEquals("查看全文 >>",str9);
  28. }

测试对编辑页的跳转是否正常

  1. //是否能成功的跳转到博客编辑页
  2. @Test
  3. @Order(2)
  4. public void skipDetail() {
  5. driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();
  6. String curWindow = driver.getWindowHandle();//获取当前的句柄
  7. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  8. for (String window:windows) {
  9. if (window!=curWindow) {
  10. driver.switchTo().window(window);//切换到点击后的句柄
  11. }
  12. }
  13. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  14. Assertions.assertNotEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  15. driver.navigate().back();//跳转回上一个界面
  16. }

测试对博客编辑页的跳转是否正常

  1. @Test
  2. @Order(3)
  3. public void skipWrite() {
  4. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
  5. String curWindow = driver.getWindowHandle();//获取当前的句柄
  6. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  7. for (String window:windows) {
  8. if (window!=curWindow) {
  9. driver.switchTo().window(window);//切换到点击后的句柄
  10. }
  11. }
  12. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  13. Assertions.assertNotEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  14. driver.navigate().back();//跳转回上一个界面
  15. }

测试注销按钮是否正常

  1. @Test
  2. @Order(4)
  3. public void skipQuit() {
  4. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
  5. String curWindow = driver.getWindowHandle();//获取当前的句柄
  6. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  7. for (String window:windows) {
  8. if (window!=curWindow) {
  9. driver.switchTo().window(window);//切换到点击后的句柄
  10. }
  11. }
  12. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  13. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  14. }

整体代码

  1. package blogsystem;
  2. import org.junit.jupiter.api.*;
  3. import org.openqa.selenium.By;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import java.time.Duration;
  6. import java.util.Set;
  7. /**
  8. * Created with IntelliJ IDEA.
  9. * Description:
  10. * User: 86184
  11. * Date: 2023-01-22
  12. * Time: 19:11
  13. */
  14. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  15. public class ListTest {
  16. private static ChromeDriver driver;
  17. private static ChromeDriver getDriver() {
  18. if (driver == null) {
  19. driver = new ChromeDriver();
  20. //隐式等待
  21. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
  22. }
  23. return driver;
  24. }
  25. @BeforeAll
  26. public static void start() {
  27. driver = getDriver();
  28. driver.get("http://101.42.54.191:8080/blog_system/blog_login.html");
  29. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  30. }
  31. public void login() {
  32. driver.findElement(By.cssSelector("#username")).clear();
  33. driver.findElement(By.cssSelector("#username")).sendKeys("aaa");
  34. driver.findElement(By.cssSelector("#password")).clear();
  35. driver.findElement(By.cssSelector("#password")).sendKeys("123");
  36. driver.findElement(By.cssSelector("#submit")).click();
  37. }
  38. @Test
  39. @Order(1)
  40. //先对我们登录界面的一些文字描述进行测试
  41. public void appearance() {
  42. login();
  43. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  44. //检测系统名称是否正确
  45. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  46. Assertions.assertEquals("我的博客系统",str1);
  47. //主页,和写博客是否正常
  48. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  49. Assertions.assertEquals("主页",str2);
  50. String str3 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).getText();
  51. Assertions.assertEquals("注销",str3);
  52. String str4 = driver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
  53. Assertions.assertEquals("aaa",str4);//验证用户名
  54. //验证标签内容是否正确
  55. String str5 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(1)")).getText();
  56. Assertions.assertEquals("文章",str5);
  57. String str6 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(2)")).getText();
  58. Assertions.assertEquals("分类",str6);
  59. String str7 = driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.title")).getText();
  60. Assertions.assertEquals("这是第一篇博客",str7);
  61. String str8 = driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.date")).getText();
  62. Assertions.assertEquals("2023-01-14 15:04:13",str8);
  63. String str9 = driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).getText();
  64. Assertions.assertEquals("查看全文 >>",str9);
  65. }
  66. //是否能成功的跳转到博客编辑页
  67. @Test
  68. @Order(2)
  69. public void skipDetail() {
  70. driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();
  71. String curWindow = driver.getWindowHandle();//获取当前的句柄
  72. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  73. for (String window:windows) {
  74. if (window!=curWindow) {
  75. driver.switchTo().window(window);//切换到点击后的句柄
  76. }
  77. }
  78. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  79. Assertions.assertNotEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  80. driver.navigate().back();//跳转回上一个界面
  81. }
  82. @Test
  83. @Order(3)
  84. public void skipWrite() {
  85. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
  86. String curWindow = driver.getWindowHandle();//获取当前的句柄
  87. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  88. for (String window:windows) {
  89. if (window!=curWindow) {
  90. driver.switchTo().window(window);//切换到点击后的句柄
  91. }
  92. }
  93. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  94. Assertions.assertNotEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  95. driver.navigate().back();//跳转回上一个界面
  96. }
  97. //
  98. @Test
  99. @Order(4)
  100. public void skipQuit() {
  101. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
  102. String curWindow = driver.getWindowHandle();//获取当前的句柄
  103. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  104. for (String window:windows) {
  105. if (window!=curWindow) {
  106. driver.switchTo().window(window);//切换到点击后的句柄
  107. }
  108. }
  109. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  110. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  111. }
  112. @AfterAll
  113. //所有的测试完了之后关闭驱动
  114. public static void close() throws InterruptedException {
  115. Thread.sleep(2000);
  116. driver.quit();
  117. }
  118. }

博客详情页的测试

在博客编辑页我们主要对界面的文字是否正确进行测试,然后对我们的删除按键是否能正确的显示进行测试,还有对各个页面的跳转进行测试。

界面文字模块的测试

  1. @Test
  2. @Order(1)
  3. //先对我们登录界面的一些文字描述进行测试
  4. public void appearance() {
  5. login();
  6. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  7. //检测系统名称是否正确
  8. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  9. Assertions.assertEquals("我的博客系统",str1);
  10. //主页,和写博客是否正常
  11. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  12. Assertions.assertEquals("主页",str2);
  13. String str3 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).getText();
  14. Assertions.assertEquals("注销",str3);
  15. //验证标签内容是否正确
  16. String str5 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(1)")).getText();
  17. Assertions.assertEquals("文章",str5);
  18. String str6 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(2)")).getText();
  19. Assertions.assertEquals("分类",str6);
  20. }

对删除按键的显示与功能进行测试

  1. @Test
  2. @Order(2)
  3. //验证我们的删除按钮是否能正常的显示并且使用
  4. public void delete() {
  5. // login();
  6. String name = driver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
  7. //如果当前的博客用户名与登录用户名一致删除按钮应该存在
  8. if ("bbb".equals(name)) {
  9. String delete = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)")).getText();
  10. Assertions.assertEquals("删除",delete);
  11. } else {
  12. try{
  13. String delete = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)")).getText();
  14. }catch (Exception e) {
  15. System.out.println("找不到删除键");
  16. }
  17. }
  18. }

测试能否成功跳转到博客编辑页

  1. //是否能成功的跳转到博客编辑页
  2. @Test
  3. @Order(3)
  4. public void skipWrite() {
  5. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
  6. String curWindow = driver.getWindowHandle();//获取当前的句柄
  7. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  8. for (String window:windows) {
  9. if (window!=curWindow) {
  10. driver.switchTo().window(window);//切换到点击后的句柄
  11. }
  12. }
  13. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  14. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_edit.html",url);
  15. driver.navigate().back();//跳转回上一个界面
  16. }

测试能否跳转到主页

  1. @Test
  2. @Order(4)
  3. public void skipMain() {
  4. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).click();
  5. String curWindow = driver.getWindowHandle();//获取当前的句柄
  6. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  7. for (String window:windows) {
  8. if (window!=curWindow) {
  9. driver.switchTo().window(window);//切换到点击后的句柄
  10. }
  11. }
  12. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  13. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_list.html",url);
  14. driver.navigate().back();//跳转回上一个界面
  15. }

测试能否注销登录

  1. @Test
  2. @Order(5)
  3. public void skipQuit() {
  4. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
  5. String curWindow = driver.getWindowHandle();//获取当前的句柄
  6. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  7. for (String window:windows) {
  8. if (window!=curWindow) {
  9. driver.switchTo().window(window);//切换到点击后的句柄
  10. }
  11. }
  12. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  13. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  14. }

整体代码

  1. package blogsystem;
  2. import org.junit.jupiter.api.*;
  3. import org.openqa.selenium.By;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import java.time.Duration;
  6. import java.util.Set;
  7. /**
  8. * Created with IntelliJ IDEA.
  9. * Description:
  10. * User: 86184
  11. * Date: 2023-01-22
  12. * Time: 21:04
  13. */
  14. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  15. public class DetailTest {
  16. private static ChromeDriver driver;
  17. private String name;//用户名
  18. private static ChromeDriver getDriver() {
  19. if (driver == null) {
  20. driver = new ChromeDriver();
  21. //隐式等待
  22. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
  23. }
  24. return driver;
  25. }
  26. @BeforeAll
  27. public static void start() {
  28. driver = getDriver();
  29. driver.get("http://101.42.54.191:8080/blog_system/blog_login.html");
  30. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  31. }
  32. public void login() {
  33. String name = "bbb";
  34. this.name = name;
  35. System.out.println(this.name);
  36. driver.findElement(By.cssSelector("#username")).clear();
  37. driver.findElement(By.cssSelector("#username")).sendKeys(name);
  38. driver.findElement(By.cssSelector("#password")).clear();
  39. driver.findElement(By.cssSelector("#password")).sendKeys("456");
  40. driver.findElement(By.cssSelector("#submit")).click();
  41. //切换到博客详情页
  42. driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();
  43. String curWindow = driver.getWindowHandle();//获取当前的句柄
  44. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  45. for (String window:windows) {
  46. if (window!=curWindow) {
  47. driver.switchTo().window(window);//切换到点击后的句柄
  48. }
  49. }
  50. }
  51. @Test
  52. @Order(1)
  53. //先对我们登录界面的一些文字描述进行测试
  54. public void appearance() {
  55. login();
  56. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  57. //检测系统名称是否正确
  58. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  59. Assertions.assertEquals("我的博客系统",str1);
  60. //主页,和写博客是否正常
  61. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  62. Assertions.assertEquals("主页",str2);
  63. String str3 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).getText();
  64. Assertions.assertEquals("注销",str3);
  65. //验证标签内容是否正确
  66. String str5 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(1)")).getText();
  67. Assertions.assertEquals("文章",str5);
  68. String str6 = driver.findElement(By.cssSelector("body > div.container > div.left > div > div:nth-child(4) > span:nth-child(2)")).getText();
  69. Assertions.assertEquals("分类",str6);
  70. }
  71. @Test
  72. @Order(2)
  73. //验证我们的删除按钮是否能正常的显示并且使用
  74. public void delete() {
  75. // login();
  76. String name = driver.findElement(By.cssSelector("body > div.container > div.left > div > h3")).getText();
  77. //如果当前的博客用户名与登录用户名一致删除按钮应该存在
  78. if ("bbb".equals(name)) {
  79. String delete = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)")).getText();
  80. Assertions.assertEquals("删除",delete);
  81. } else {
  82. try{
  83. String delete = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)")).getText();
  84. }catch (Exception e) {
  85. System.out.println("找不到删除键");
  86. }
  87. }
  88. }
  89. //是否能成功的跳转到博客编辑页
  90. @Test
  91. @Order(3)
  92. public void skipWrite() {
  93. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
  94. String curWindow = driver.getWindowHandle();//获取当前的句柄
  95. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  96. for (String window:windows) {
  97. if (window!=curWindow) {
  98. driver.switchTo().window(window);//切换到点击后的句柄
  99. }
  100. }
  101. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  102. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_edit.html",url);
  103. driver.navigate().back();//跳转回上一个界面
  104. }
  105. @Test
  106. @Order(4)
  107. public void skipMain() {
  108. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).click();
  109. String curWindow = driver.getWindowHandle();//获取当前的句柄
  110. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  111. for (String window:windows) {
  112. if (window!=curWindow) {
  113. driver.switchTo().window(window);//切换到点击后的句柄
  114. }
  115. }
  116. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  117. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_list.html",url);
  118. driver.navigate().back();//跳转回上一个界面
  119. }
  120. @Test
  121. @Order(5)
  122. public void skipQuit() {
  123. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
  124. String curWindow = driver.getWindowHandle();//获取当前的句柄
  125. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  126. for (String window:windows) {
  127. if (window!=curWindow) {
  128. driver.switchTo().window(window);//切换到点击后的句柄
  129. }
  130. }
  131. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  132. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  133. }
  134. @AfterAll
  135. //所有的测试完了之后关闭驱动
  136. public static void close() throws InterruptedException {
  137. Thread.sleep(2000);
  138. driver.quit();
  139. }
  140. }

博客编辑页的测试

测试界面文字

  1. @Test
  2. @Order(1)
  3. //先对我们登录界面的一些文字描述进行测试
  4. public void appearance() {
  5. login();
  6. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  7. //检测系统名称是否正确
  8. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  9. Assertions.assertEquals("我的博客系统",str1);
  10. //主页,和写博客是否正常
  11. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  12. Assertions.assertEquals("主页",str2);
  13. String str3 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).getText();
  14. Assertions.assertEquals("注销",str3);
  15. String str4 = driver.findElement(By.cssSelector("#submit")).getAttribute("value");
  16. Assertions.assertEquals("发布文章",str4);
  17. String str5 = driver.findElement(By.cssSelector("#title")).getAttribute("placeholder");
  18. Assertions.assertEquals("在此处输入标题",str5);
  19. }

测试发布功能是否正常

  1. @Test
  2. @Order(3)
  3. public void publish() {
  4. driver.findElement(By.cssSelector("#title")).sendKeys("这是第三篇博客");
  5. driver.findElement(By.cssSelector("#submit")).click();
  6. String curWindow = driver.getWindowHandle();//获取当前的句柄
  7. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  8. //若发布成功则会跳转到博客列表页
  9. for (String window:windows) {
  10. if (window!=curWindow) {
  11. driver.switchTo().window(window);//切换到点击后的句柄
  12. }
  13. }
  14. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  15. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_list.html",url);
  16. driver.navigate().back();//跳转回上一个界面
  17. }

测试跳转主页是否正常

  1. @Test
  2. @Order(2)
  3. public void skipMain() {
  4. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).click();
  5. String curWindow = driver.getWindowHandle();//获取当前的句柄
  6. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  7. for (String window:windows) {
  8. if (window!=curWindow) {
  9. driver.switchTo().window(window);//切换到点击后的句柄
  10. }
  11. }
  12. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  13. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_list.html",url);
  14. driver.navigate().back();//跳转回上一个界面
  15. }

测试退出登录是否正常

  1. @Test
  2. @Order(4)
  3. public void skipQuit() {
  4. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
  5. String curWindow = driver.getWindowHandle();//获取当前的句柄
  6. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  7. for (String window:windows) {
  8. if (window!=curWindow) {
  9. driver.switchTo().window(window);//切换到点击后的句柄
  10. }
  11. }
  12. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  13. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  14. }

整体代码

  1. package blogsystem;
  2. import org.junit.jupiter.api.*;
  3. import org.openqa.selenium.By;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import java.time.Duration;
  6. import java.util.Set;
  7. /**
  8. * Created with IntelliJ IDEA.
  9. * Description:
  10. * User: 86184
  11. * Date: 2023-01-22
  12. * Time: 23:08
  13. */
  14. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  15. public class editTest {
  16. private static ChromeDriver driver;
  17. private static ChromeDriver getDriver() {
  18. if (driver == null) {
  19. driver = new ChromeDriver();
  20. //隐式等待
  21. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
  22. }
  23. return driver;
  24. }
  25. @BeforeAll
  26. public static void start() {
  27. driver = getDriver();
  28. driver.get("http://101.42.54.191:8080/blog_system/blog_login.html");
  29. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  30. }
  31. public void login() {
  32. driver.findElement(By.cssSelector("#username")).clear();
  33. driver.findElement(By.cssSelector("#username")).sendKeys("bbb");
  34. driver.findElement(By.cssSelector("#password")).clear();
  35. driver.findElement(By.cssSelector("#password")).sendKeys("456");
  36. driver.findElement(By.cssSelector("#submit")).click();
  37. //切换到博客编辑页
  38. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
  39. String curWindow = driver.getWindowHandle();//获取当前的句柄
  40. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  41. for (String window:windows) {
  42. if (window!=curWindow) {
  43. driver.switchTo().window(window);//切换到点击后的句柄
  44. }
  45. }
  46. }
  47. @Test
  48. @Order(1)
  49. //先对我们登录界面的一些文字描述进行测试
  50. public void appearance() {
  51. login();
  52. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待页面的渲染完成
  53. //检测系统名称是否正确
  54. String str1 = driver.findElement(By.cssSelector("body > div.nav > span")).getText();
  55. Assertions.assertEquals("我的博客系统",str1);
  56. //主页,和写博客是否正常
  57. String str2 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).getText();
  58. Assertions.assertEquals("主页",str2);
  59. String str3 = driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).getText();
  60. Assertions.assertEquals("注销",str3);
  61. String str4 = driver.findElement(By.cssSelector("#submit")).getAttribute("value");
  62. Assertions.assertEquals("发布文章",str4);
  63. String str5 = driver.findElement(By.cssSelector("#title")).getAttribute("placeholder");
  64. Assertions.assertEquals("在此处输入标题",str5);
  65. }
  66. @Test
  67. @Order(2)
  68. public void skipMain() {
  69. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)")).click();
  70. String curWindow = driver.getWindowHandle();//获取当前的句柄
  71. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  72. for (String window:windows) {
  73. if (window!=curWindow) {
  74. driver.switchTo().window(window);//切换到点击后的句柄
  75. }
  76. }
  77. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  78. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_list.html",url);
  79. driver.navigate().back();//跳转回上一个界面
  80. }
  81. @Test
  82. @Order(3)
  83. public void publish() {
  84. driver.findElement(By.cssSelector("#title")).sendKeys("这是第三篇博客");
  85. driver.findElement(By.cssSelector("#submit")).click();
  86. String curWindow = driver.getWindowHandle();//获取当前的句柄
  87. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  88. //若发布成功则会跳转到博客列表页
  89. for (String window:windows) {
  90. if (window!=curWindow) {
  91. driver.switchTo().window(window);//切换到点击后的句柄
  92. }
  93. }
  94. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  95. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_list.html",url);
  96. driver.navigate().back();//跳转回上一个界面
  97. }
  98. @Test
  99. @Order(4)
  100. public void skipQuit() {
  101. driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
  102. String curWindow = driver.getWindowHandle();//获取当前的句柄
  103. Set<String> windows = driver.getWindowHandles();//获取所有的句柄
  104. for (String window:windows) {
  105. if (window!=curWindow) {
  106. driver.switchTo().window(window);//切换到点击后的句柄
  107. }
  108. }
  109. String url = driver.getCurrentUrl();//获取当前页面的url然后与博客详情页的页面url做对比看看页面是否切换成功
  110. Assertions.assertEquals("http://101.42.54.191:8080/blog_system/blog_login.html",url);
  111. }
  112. @AfterAll
  113. //所有的测试完了之后关闭驱动
  114. public static void close() throws InterruptedException {
  115. Thread.sleep(2000);
  116. driver.quit();
  117. }
  118. }

通过 Suite 套件测试

  1. package com.auto;
  2. import org.junit.platform.suite.api.SelectPackages;
  3. import org.junit.platform.suite.api.Suite;
  4. /**
  5. * Created with IntelliJ IDEA.
  6. * Description:
  7. * User: 86184
  8. * Date: 2023-01-21
  9. * Time: 22:25
  10. */
  11. @Suite
  12. @SelectPackages("com.auto")
  13. public class RunAll {
  14. }

测试全部通过。

标签: java selenium

本文转载自: https://blog.csdn.net/m0_56911284/article/details/128744115
版权归原作者 ~小明学编程 所有, 如有侵权,请联系我们删除。

“博客系统项目的自动化测试”的评论:

还没有评论