1、修改Login类加入断言;

  断言:检查我们操作页面后得到的结果与我们预期的结果是否一致。

2、使用xml文件运行所有的测试类;

Login类写入两个测试用例:

  1. package com.test;
  2.  
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import org.testng.Assert;
  6. import org.testng.annotations.AfterMethod;
  7. import org.testng.annotations.BeforeMethod;
  8. import org.testng.annotations.Test;
  9.  
  10. public class Login {
  11. WebDriver driver = null;
  12. //调用定位元素的方法
  13. ElementLocation elementLocation = new ElementLocation();
  14. //在一个方法运行之前运行
  15. @BeforeMethod
  16. public void before(){
  17. System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver.exe");
  18. driver = new ChromeDriver();
  19. String url = "http://xadev.alsolife.com/";
  20. driver.manage().window().maximize();
  21. driver.get(url);
  22. }
  23. /**
  24. * 定位登录界面元素
  25. * 1.输入正确手机号码
  26. * 2.输入正确密码
  27. * 3.登录成功
  28. */
  29. // @Test
  30. // public void test_login1(){
  31. // elementLocation.findElementByCssClearSendkeys("input[type='text']","15211111111",driver);
  32. // elementLocation.findElementByCssClearSendkeys("input[type='password']","123456",driver);
  33. // elementLocation.findElementByCssClick("button[type='button']",driver);
  34. // System.out.println("登录成功,跳转到首页");
  35. // }
  36.  
  37. //输入错误用户名
  38. @Test
  39. public void test_login2(){
  40. String phone = "153";
  41. elementLocation.findElementByCssClearSendkeys("input[type='text']",phone,driver);
  42. elementLocation.findElementByCssClick("button[type='button']",driver);
         //加入断言
  43. try{
  44. Assert.assertEquals(phone,"15211111111");
  45. }catch(AssertionError e){
  46. System.out.println( "手机号格式有误:"+e.getMessage());
  47. }
  48. }
  49. //不输入手机号
  50. @Test
  51. public void test_login3(){
  52. String phone = "";
  53. //输入手机号
  54. elementLocation.findElementByCssClearSendkeys("input[type='text']",phone,driver);
  55. //点击登录
  56. elementLocation.findElementByCssClick("button[type='button']",driver);
  57. try{
  58. Assert.assertEquals(phone,"15211111111");
  59. }catch (AssertionError e){
  60. System.out.println("手机号不能为空"+e.getMessage());
  61. }
  62. }
  63. //在一个方法运行完之后运行
  64. @AfterMethod
  65. public void after(){
  66. try{
  67. Thread thread = new Thread();
  68. thread.sleep(5000);
  69. }catch (InterruptedException e){
  70. e.printStackTrace();
  71. }
  72. driver.quit();
  73. }
  74. }

创建一个TestSuit.xml文件(名称随便起):

  1. <suite name="TestSuite Demo">
  2. <test name="TestSuite Demo Test">
  3. <classes>
  4. <!-- 执行测试用例的类-->
           <!-- name:被执行类的包名
              <class>会有多个 -->
  5. <class name="com.test.Login"></class>
  6. </classes>
  7. </test>
  8. </suite>

直接运行TestSuit.xml文件,会执行Login类。

运行结果如下:

内容:

1、TestNG中常用的断言方法:

  assertEquals(String actual, String expected)  //判断真实值与预期值是否相等,如果不相等测试失败会抛出一个异常

       assertEqual(String actual,String expected, Stringmessage) //检查两个字符串是否相等, 如果不相等,测试失败, 且在抛出异常中打印出我们提供的第三个message参数信息

  assertTrue(boolean condition) //如果值为true,则用例通过,否则抛出一个AssertionError异常

  assertFalse(boolean condition)

2、测试用例的执行顺序,Login类中的两个测试用例:test_login2,test_login3

  一般是以字符排序,如果字符相同以数字排序。

说一下之前的问题:

1、之前存日期,一直没有保存成功,原因是按钮元素定位方式不对:

之前的写法:driver.findElement(By.ByXPath.xpath("(//button[@type='button'])[1]")).click();

    改正之后:    driver.findElement(By.ByXPath.xpath("//button[contains(@class,'submit-infor')]")).click();

一直以为是日期的定位元素不对一直修改,最后发现是按钮定位的不正确,但是存在的疑点是:其他内容都能保存成功就日期不行。

Java+Selenium+Testng自动化测试学习(三)— 断言的更多相关文章

  1. Java+Selenium+Testng自动化测试学习(二)

    Java+Selenium+TestNG自动化测试框架整合 1.简化代码 封装一个定位元素的类,类型为ElementLocation package com.test; import org.open ...

  2. Java+Selenium+Testng自动化测试学习(四)— 报告

    自动化测试报告,在测试用例完成之后系统自动生成HTML报告 使用testng中的报告模板生成报告, 1.在TestSuit.xml文件中配置报告监听 2.运行xml文件 3.自动生成一个test-ou ...

  3. java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离

    1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...

  4. Java&Selenium&TestNG&ZTestReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport 源码Clone地址为 https://github.com/zhangfei1984 ...

  5. java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)

    1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例 ...

  6. java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能

    1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...

  7. java+selenium+testNG+excel 实现 web 网页的自动化测试

    webdriver的关键字从excel读取,这样测试人员只需要在excel中填写相关用例即可 前端微站和后台系统的用例可整合在同一excel中,这样可实现前端与后台的闭循环测试 除了一些基本的校验规则 ...

  8. selenium+testNG自动化测试框架搭建

    自动化测试框架搭建 1 Java环境的搭建 1.1访问oracle的官网下载最新版本的jdk http://www.oracle.com/technetwork/java/javase/downloa ...

  9. Java&Selenium Web自动化测试框架理念

    一.自动化测试含义 在自动化测试领域内流传着一个说法:单元测试才是自动化测试的核心,在自动化测试里,无论框架何等完美都不可能脱离单元测试,单元测试将会是自动化测试里最小的单位,把它看作单位一,若干个单 ...

随机推荐

  1. python下timer定时器常用的两种实现方法

    方法一,使用线程中现成的:   这种一般比较常用,特别是在线程中的使用方法,下面是一个例子能够很清楚的说明它的具体使用方法: #! /usr/bin/python3 #! -*- conding: u ...

  2. PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  3. Android 基础知识 -- BroadcastReceiver

    BroadcastReceiver 广播,是一种事件传递机制,可以跨应用进行事件传递(系统级). 在使用广播的时候,不宜添加过多的逻辑或者耗时(广播内不允许开辟线程)操作,超过10秒,导致ANR 1 ...

  4. Burp Suite Professional 针对APP抓包篡改数据提交【安全】

    Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应的HTTP 消息 ...

  5. i春秋公益赛 ezpload

    题目思路:一看解出的人比较多,emmm,传个马,命令执行一下.最后读到flag文件. /readflag,可执行. 题对萌新比较友好...... 考点:Linux命令,文件上传,命令执行. http: ...

  6. vue koa2 mongodb 从零开始做个人博客(一) 登录注册功能前端部分

    0.效果演示 插入视频插不进来,就很烦.可以出门右拐去优酷看下(点我!). 1.准备工作 1.1前端框架 前端使用了基于vue.js的nuxt.js.为什么使用nuxt.js? 首先我做的是博客的项目 ...

  7. itchat 爬了爬自己的微信通讯录

    参考 一件有趣的事: 爬了爬自己的微信朋友 忘记从谁那里看到的了,俺也来试试 首先在annconda prompt里面安装了itchat包 pip install itchat 目前对python这里 ...

  8. 一直报找不到function,然后又不为null。最后发现是个数组。哭死。

    今天写代码,报找不到function.然后又不为空.最后发现是类型不对.因为是数组,所以不能用node.function(),而应该用nodeArr[0].function.错用前者会找不到funct ...

  9. gulp 对js\css进行md5 加密

    有的服务器为了网站加载速度,会做服务器缓存,这样就会出现代码出现引用地址没变,新代码不生效,而我们又希望新代码可以及时生效,这样我们就需要避免缓存,当然也有很多方法,本文只介绍使用gulp-rev(对 ...

  10. 原生js判断设备类型

    var u = navigator.userAgent; //Android终端 var isAndroid = u.indexOf('Android') > -1 || u.indexOf(' ...