自动化测试项目实战

末蓝、 2023-10-13 20:43 130阅读 0赞

目录

1.熟悉项目

2.针对核心流程设计手工测试用例

3.手工测试用例转换为自动化测试用例

前置工作

测试工作

登陆界面

博客列表页数量

博客详情页检验

写博客并发布

校验标题,时间

删除博客

注销博客


针对博客系统进行自动化测试

1.熟悉项目

2.针对核心流程设计手工测试用例

9bec2860c7c348039c77ce225133e622.png

3.手工测试用例转换为自动化测试用例

前置工作

初始化工作:@BeforeAll 创建驱动

退出工作:@AfterAll 退出浏览器

  1. public class InitAndEnd {
  2. static WebDriver webDriver;
  3. @BeforeAll
  4. static void SetUp(){
  5. webDriver = new ChromeDriver();
  6. }
  7. @AfterAll
  8. static void TearDown(){
  9. webDriver.quit();
  10. }
  11. }

测试工作

登陆界面

  1. import org.junit.jupiter.api.Assertions;
  2. import org.junit.jupiter.params.ParameterizedTest;
  3. import org.junit.jupiter.params.provider.CsvFileSource;
  4. import org.openqa.selenium.By;
  5. import java.util.concurrent.TimeUnit;
  6. import static java.lang.Thread.sleep;
  7. public class BlogCases extends InitAndEnd{
  8. /*
  9. 输入正确的账号密码,登陆成功
  10. */
  11. @ParameterizedTest
  12. @CsvFileSource(resources = "LoginCSv.csv")
  13. void LoginSuccess(String username,String password,String blogList_URL){
  14. //打开博客登录页面
  15. webDriver.get("http://localhost:8080/login.html");
  16. // sleep(3000);
  17. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  18. //输入账号zhangsan
  19. webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
  20. //输入密码123456
  21. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  22. webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
  23. //点击提交按钮
  24. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  25. webDriver.findElement(By.cssSelector("#submit")).click();
  26. //跳转到列表页,获取URL,如果url为列表页面的,测试通过,否则不通过
  27. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  28. String cur_url = webDriver.getCurrentUrl();
  29. Assertions.assertEquals(blogList_URL,cur_url);
  30. }
  31. }

1c17006a06be46e6a7ee2453de128ecb.png

错误情况95a4c379d56842d0812264e84c329bf3.png

博客列表页数量

  1. /*
  2. 博客数量
  3. */
  4. @Test
  5. void BlogList() {
  6. //打开博客列表页
  7. webDriver.get("http://localhost:8080/myblog_list.html");
  8. //获取页面所有博客标题对应的元素
  9. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  10. int title_num = webDriver.findElements(By.cssSelector(".title")).size();
  11. //元素数量为0测试不通过
  12. Assertions.assertNotEquals(0,title_num);
  13. }

d8bcbf242f104cb089f9101d46bdb756.png

博客详情页检验

url 博客标题 详情页title是否是博客详情页

  1. /*
  2. 博客详情页检验
  3. url
  4. 博客标题
  5. 详情页title是否是博客详情页
  6. */
  7. @ParameterizedTest
  8. @MethodSource("Generator")
  9. void BlogDetail(String expected_url,String expected_title,String expected_blog_title){
  10. //找到第一篇博客的查看全文按钮
  11. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  12. webDriver.findElement(By.xpath("//*[@id=\"articleList\"]/div[1]/a[1]")).click();
  13. //获取url
  14. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  15. String cur_url = webDriver.getCurrentUrl();
  16. //获取当前页面title
  17. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  18. String cur_title = webDriver.getTitle();
  19. //获取博客标题
  20. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  21. String cur_blog_title = webDriver.findElement(By.cssSelector("#title")).getText();
  22. //断言
  23. Assertions.assertEquals(expected_url,cur_url);
  24. Assertions.assertEquals(expected_title,cur_title);
  25. Assertions.assertEquals(expected_blog_title,cur_blog_title);
  26. }
  27. public static Stream<Arguments> Generator() {
  28. return Stream.of(Arguments.arguments("http://localhost:8080/blog_content.html?id=10",
  29. "博客详情页","Java数据结构基础——泛型、通配符"));
  30. }

448751b7392b4d16b67f3cd93ecf1693.png

写博客并发布

  1. @Order(3)
  2. @Test
  3. void EditBolg(){
  4. //点击写博客按钮
  5. webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
  6. //输入标题,通过Jscript也能输入
  7. webDriver.findElement(By.cssSelector("#title")).sendKeys("软件测试");
  8. //点击发布
  9. webDriver.findElement(By.cssSelector("body > div.blog-edit-container > div.title > button")).click();
  10. }

1a5cc9c0254e48a6b9cf8043d60ecc8d.png

b464fa6f351b4477af3294efa3e9d6dc.png

校验标题,时间

  1. @Order(3)
  2. @Test
  3. void BlogInfoChecked() throws InterruptedException {
  4. webDriver.get("http://localhost:8080/blog_list.html");
  5. sleep(3000);
  6. //获取第一篇文章标题
  7. String cur_blog_title = webDriver.findElement(By.cssSelector("#articleList > div:nth-child(1) > div.title")).getText();
  8. //获取博客发布时间
  9. sleep(3000);
  10. String cur_blog_time= webDriver.findElement(By.xpath("//*[@id=\"articleList\"]/div[1]/div[2]")).getText();
  11. //判断
  12. Assertions.assertEquals("软件测试",cur_blog_title);
  13. if(cur_blog_time.equals("2023-07-20")){
  14. System.out.println("测试通过");
  15. }else {
  16. System.out.println("测试不通过");
  17. }
  18. }

c1ab1fcf0e254dafbfcbb9efbed4efc6.png

删除博客

并确认是否删除成功,第一篇文章是否已经改变

  1. @Order(3)
  2. @Test
  3. void deleteBlog() throws InterruptedException {
  4. webDriver.get("http://localhost:8080/myblog_list.html");
  5. //点击第一篇文章删除按钮
  6. webDriver.findElement(By.xpath("//*[@id=\"articleList\"]/div[1]/a[3]")).click();
  7. //确认删除
  8. webDriver.switchTo().alert().accept();
  9. // webDriver.findElement(By.xpath("//*[@id=\"articleList\"]/div[1]/div[1]")).click();
  10. //删除成功确认
  11. sleep(3000);//确认
  12. webDriver.switchTo().alert().accept();
  13. //获取第一篇文章是否是Java数据结构基础——泛型、通配符
  14. String cur_blog_title = webDriver.findElement(By.cssSelector("#articleList > div:nth-child(1) > div.title")).getText();
  15. //断言
  16. Assertions.assertEquals("Java数据结构基础——泛型、通配符",cur_blog_title);
  17. }

c019071708fa4769a1e671ff6b4e0d52.png

注销博客

并判断是否跳转到登陆页面,输入框是否清空

  1. /*
  2. 注销博客
  3. */
  4. @Test
  5. @Order(3)
  6. void exit(){
  7. //注销操作
  8. webDriver.get("http://localhost:8080/myblog_list.html");
  9. webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();
  10. webDriver.switchTo().alert().accept();
  11. //是否跳转到登陆页面
  12. //获取url
  13. webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
  14. String cur_url = webDriver.getCurrentUrl();
  15. //判断
  16. Assertions.assertEquals("http://localhost:8080/login.html",cur_url);
  17. //判断输入框是否为空
  18. String input_name = webDriver.findElement(By.cssSelector("#username")).getText();
  19. String input_pwd = webDriver.findElement(By.cssSelector("#password")).getText();
  20. Assertions.assertEquals("",input_name);
  21. Assertions.assertEquals("",input_pwd);
  22. }

29bd188b2ccf4f1eb2b16b7e2ded5638.png

发表评论

表情:
评论列表 (有 0 条评论,130人围观)

还没有评论,来说两句吧...

相关阅读

    相关 自动化测试项目实战

    目录 1.熟悉项目 2.针对核心流程设计手工测试用例 3.手工测试用例转换为自动化测试用例 前置工作 测试工作 登陆界面 博客列表页数量 博客详情页检验 写