总体思路:对个人博客这个项目的核心功能进行自动化测试,针对以下几点设计了测试用例,登录,博客列表页,博客详情页,写博客,删除博客,注销用户
测试登录页面
这里无非两种情况,登录成功和登录失败,实际情况如下
登录成功的情况
登录成功然后会跳转到博客列表页,就是这么个效果,这是博客列表页
步骤:1.输入用户名和密码;2.校验跳转的页面的URL是不是我们的博客列表页
/**
* 测试登录页
*/
@Order(1)
@ParameterizedTest
@CsvFileSource(resources = "LoginSuccess.csv")
void LoginSuccess(String username,String password,String url) throws InterruptedException {
System.out.println(username + password + url);
//打开博客登录页
webDriver.get("http://localhost:8080/login.html");
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);//智能等待(显)
//输入账号admin
webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);//智能等待(显)
//输入密码admin
webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);//智能等待(显)
//点击提交
webDriver.findElement(By.cssSelector("#submit")).click();
sleep(3000);//隐式等待
//跳转到列表页
//如果是我们要的那个页面,则测试通过,如果不是则测试失败
//目标url,http://localhost:8080/myblog_list.html
String cur_url = webDriver.getCurrentUrl();
Assertions.assertEquals("http://localhost:8080/myblog_list.html",url);
}
这里用到了参数化,@CsvFileSource(),将我们要传的参数放到了LoginSuccess.cvs这个文件里面,这个文件的创建也有快捷方式,就是写好@CsvFileSource("LoginSuccess.cvs")后,将光标放在"LoginSuccess.cvs"上,然后左边就会自己冒出一个小灯泡就可以快捷创建这个cvs文件了,然后在里面写好要传的参数
登录失败的情况
步骤:1.输入用户名和密码,咱们这一次肯定用户名或者密码不对,所以就会跳出弹窗,也就是说出现弹窗就是登录失败,我们只需要去确认有没有弹窗
发现的问题
当我们点击提交的时候,使用的智能等待,但是智能等待的时间还是太短,给系统反应的时间也短,于是底下的比对也反应不过来,最后捕捉到的URL还是登录页的,比对不成功
专业一点就是说,没有智能等待的话,页面还没渲染出来,如果这时候比对的话,肯定出问题
测试博客列表页是否有文章
步骤:查看文章标题的数量,只要不为零就是测试成功
测试博客详情页
进入博客详情页
步骤:点击查看全文的按钮,获得当前页面的URL进行校验,获得当前页面的标题进行校验,获取最上面一个文章的标题进行校验
这里用到了参数,对于不同类型的参数进行输入和赋值
使用MethodSource,里面输入函数名,光标放在Generator上,左边就会自己冒个小灯泡,,就可以快捷创建了
测试写博客
1.写完博客,发布文章,继续添加,还是在写博客的页面
仍然在写博客的页面
2.写完博客,发布文章,取消继续添加,跳转到博客列表页
跳转到博客列表页
校验刚刚写的博客是否符合预期
只需要验证这两个是否有问题就可以了
测试博客删除
测试博客的注销
1.点击注销,弹窗确认,就会跳转到登录页面,要进行URL的校验,并且在登录页面也要校验账号和密码是否为空
返回到登录页面了
看登录页面是否有用户名或者密码不为空的
上面的Disable注解是表示,测试的时候忽略这个测试用例
2.点击注销,弹窗取消,就还是留在原地在博客列表页,只需要校验URL就行了
仍然在列表页