nightwatch API

Expect

NightWatch在0.7版本 新推出一种BDD-style界面 来执行断言,叫做Expect.它以Chai Expect断言库为参考,比传统的asset界面更灵活更高效.

Language Chains

以下命令仅作辅助,提高断言可读性。本身不具有测试能力

  • to
  • be
  • been
  • is
  • that
  • which
  • and
  • has
  • have
  • with
  • at
  • does
  • of

.equal(value)/.contain(value)/.match(regex)

判断组件是否

  • 值是否与指定值相等
    browser.expect.element(‘#main‘).text.to.equal(‘The Night Watch‘);
  • 值是否包含指定值
    browser.expect.element(‘#main‘).text.to.contain(‘The Night Watch‘);
  • 是否有指定样式
    browser.expect.element(‘#main‘).to.have.css(‘display‘).which.equals(‘block‘);

.not

取反 写在equal,contain,match前面 text.to.not.equal()

.before(ms)/.after(ms)

在指定的时间再执行一次断言,可与任何断言配合使用,使其可以再执行

  • browser.expect.element(‘#main‘).text.to.contain(‘The Night Watch‘).before(1000);
  • browser.expect.element(‘#main‘).text.to.not.contain(‘The Night Watch‘).after(500);

.a(type) /an

检查指定组件的类型是否与预期相符。参数与:type,message(optional)

  • browser.expect.element(‘#q‘).to.be.an(‘input‘);
  • browser.expect.element(‘#q‘).to.be.an(‘input‘, ‘Testing if #q is an input‘);
  • browser.expect.element(‘#w‘).to.be.a(‘span‘);

.attribute(name)

检查元素的某个属性是否存在,是否有预期的值(optional)

  • browser.expect.element(‘body‘).to.have.attribute(‘data-attr‘);

.css

同attribute

  • browser.expect.element(‘#main‘).to.have.css(‘display‘).which.matches(/some\ value/);

.enabled

检查元素现在是否可用

  • browser.expect.element(‘#weblogin‘).to.be.enabled;
  • browser.expect.element(‘#main‘).to.not.be.enabled;

.present

检测元素是否在dom中出现

  • browser.expect.element(‘#main‘).to.be.present;

.select

检测下拉框,单选框,复选框当前是否被选中

.text

检测组件是否有指定文本/表达式,可与contains,equals,matches配合使用

  • .text.to.match(/The\ Night\ Watch/)

.value

同text

  • .to.have.value.which.contains/.not.equals/.that.equals

.visible

是否可见

assert

经典的assert&verify断言库在NightWatch仍然可用.它们作用相同,不同之处在于当前断言失败后assert会跳过之后的断言,结束测试(相当于break);verify会跳过当前断言,输出错误报告,继续执行其他断言(相当于continue).

.attributeContains()

检查某元素给定的属性是否有预期的值
参数:

  1. selector,用来定位元素
  2. attribute,属性名
  3. expected,期望包含的值
  4. message (optional),测试结果中的信息说明

eg. browser.assert.attributeContains(‘#someElement‘, ‘href‘, ‘google.com‘);

.attributeEquals()

同上(attributeContains)

.containsText()

参数:

  1. cssSelector
  2. expectedText
  3. msg(Optional)

eg. browser.assert.containsText("#main", "The Night Watch");

.cssClassPresent()

检查元素是否有指定的CSS类名
参数:

  1. cssSelector,用来定位元素
  2. className,期望有的类名
  3. message (optional),测试结果中的信息说明

eg. browser.assert.cssClassPresent("#main", "container");

.cssClassNotPresent()

楼上(.cssClassPresent)取反

.cssProperty()

检查元素的指定属性是否是期望的状态
参数:

  1. cssSelector,用来定位元素
  2. cssProperty,属性
  3. expected,
  4. message (optional),测试结果中的信息说明

eg. browser.assert.cssProperty("#main", "display", "block");

.elementPresent()

dom中是否含有指定元素

  • browser.assert.elementPresent("#main");

.elementNotPresent()

楼上取反

.hidden()

检查指定元素是否在页面不可见

  • browser.assert.hidden(".should_not_be_visible");

.title()

检查页面标题是否是指定标题

  • browser.assert.title("Nightwatch.js");

.urlContains()

检查当前的URL是否包含指定值

  • browser.assert.urlContains(‘google‘);

.urlEquals()

  • browser.assert.urlEquals(‘http://www.google.com‘);

.value()

检查指定的表单元素的值 是否与指定值相等

  • browser.assert.value("form.login input[type=text]", "username");

.valueContains()

  • browser.assert.valueContains("form.login input[type=text]", "username");

.visible()

  • browser.assert.visible(".should_be_visible");

Commands

Commands可在页面上执行不同的操作,通常包含两个及以上的页面驱动协议行为.

回调函数

以下的方法均支持回调函数.回调函数将在command完成之后执行

.clearValue()

可清理文本域或文本输入框里的内容

  • client.clearValue(‘input[type=text]‘);

.click()

模仿点击事件

  • client.click("#main ul li a.first");

感觉更适合与回调函数配合使用 
browser.click("#main ul li a.first", function(response) { 
this.assert.ok(browser === this, "Check if the context is right."); 
this.assert.ok(typeof response == "object", "We got a response object."); 
});

.closeWindow()

关闭当前窗口,当你使用多个窗口时适用

.deleteCookie()

删除cookie

时间: 2024-11-02 15:38:45

nightwatch API的相关文章

NightWatch API学习之expect,assert

Expect NightWatch在0.7版本 新推出一种BDD-style界面 来执行断言,叫做Expect.它以Chai Expect断言库为参考,比传统的asset界面更灵活更高效. Language Chains 以下命令仅作辅助,提高断言可读性.本身不具有测试能力 to be been is that which and has have with at does of .equal(value)/.contain(value)/.match(regex) 判断组件是否 值是否与指定值

使用Nightwatch.js做基于浏览器的web应用自动测试

1        安装 1.1   安装Node.js 在http://nodejs.org/ 上下载适合本机系统的安装包运行安装,注意安装选项中选择npm tool以用于后续依赖包的安装. 1.2   通过npm工具安装Nightwatch 命令行运行"npm install nightwatch",如下的提示表明安装成功. 1.3   Npm相关目录结构 所有npm安装的模块都会基于当前cmd窗口的目录,也就是说如果cmd的工作目录是在c:\根目录,则会在该目录下创建node_mo

vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试,并为回归测试提供反馈. 端到端测试又简称E2E(End-To-End test)测试,它不同于单元测试侧重于检验函数的输出结果,端到端测试将尽可能从用户的视角,对真实系统的访问行为进行仿真.对于Web应用来说,这意味着需要打开浏览器.加载页面.运行JavaScript,以及进行与DOM交互等操作.

百度地图API实现批量地址解析

1.前言 写这篇文章的原因是最近做一个GIS项目在网上爬取了一些数据,无奈只有地址的文字信息没有坐标信息,如何把信息显现在地图上呢?很纠结啊,查看了一下百度地图API惊奇的发现百度提供了地址解析的API,然后查看了他的Demo后豁然开朗,所以动手将自己的文字信息数据进行解析坐标信息.下面开始讲解. 2.方案 (1)自己数据库中的数据 (2)百度地图API Demo <!DOCTYPE html> <html> <head> <meta http-equiv=&qu

【API】高德地图API JS实现获取坐标和回显点标记

1.搜索+选择+获取经纬度和详细地址 2.回显数据并点标记 3.实现 第一步:引入资源文件 <!--引入高德地图JSAPI --><script src="//webapi.amap.com/maps?v=1.3&key=在官网申请一个key"></script><!--引入UI组件库(1.0版本) --><script src="//webapi.amap.com/ui/1.0/main.js">

【Windows10&nbsp;IoT开发系列】API&nbsp;移植工具

原文:[Windows10 IoT开发系列]API 移植工具 Windows 10 IoT Core 中是否提供你的当前 Win32 应用程序或库所依赖的 API? 如果不提供,是否存在可使用的等效 API? 此工具可以为你回答这些问题,并协助你将你的当前 Win32 应用程序和库迁移到 Windows IoT Core. Windows 10 IoT 核心版 API 移植工具可在 ms-iot/iot-utilities github 存储库中找到.下载存储库 zip 并将 IoTAPIPor

beego应用做纯API后端如何使用jwt实现无状态权限验证

jwt是什么,可以百度下其它文章,我原来看到一个讲的详细的,现在找不到了.先简单介绍下我个人的理解,就是一个token,只不过通过加密解密的手段,能让这一串字符带有一些简单的信息.这样解密jwt后不用查数据库,最常用的例子,保存用户权限,再多层的权限,其实只用一个数字,转换成二进制,每一位代表一种权限.类似这样的使用,还有保存session的key,通过该值查session就能获取更丰富的资料,用来保存用户状态也是可以的. 下面介绍下我的一个golang项目中使用beego框架做纯API接口使用

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

通过beego快速创建一个Restful风格API项目及API文档自动化(转)

通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界面. 一.创建数据库及数据表(MySQL) #db--jeedev -- ---------------------------- -- Table structure for `app` -- ---------------------------- DROP TABLE IF EXISTS `a