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)

判断组件是否

  • 值是否与指定值相等
    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-10-28 19:01:37

NightWatch API学习之expect,assert的相关文章

野兽的Angular Api 学习、翻译及理解 - - form.FormController、ngModel.NgModelController

野兽的ng api学习 -- form.FormController.ngModel.NgModelController form.FormController FormController跟踪所有他所控制的和嵌套表单以及他们的状态,就像有效/无效或者脏值/原始. 每个表单指令创建一个FormController实例. 方法: $addControl(); 给表单注册一个控制器. 使用了ngModelController的输入元素会在连接时自动执行. $removeControl(); 给表单注

@野兽的Angular Api 学习、翻译及理解 - - angular.module

@野兽的 ng api 学习 -- angular.module angular.module 创建一个全局的可用于检索和注入的Angular模块.所有Angular模块(Angular核心模块或者第三方模块)想要在应用里实现,都需要使用这个注入机制. 格式:angular.module(name,[requires],[configFn]); name :  string  创建的模块名称. [requires]: 字符串的数组  代表该模块依赖的其他模块列表,如果不依赖其他模块,则为空数组.

野兽的Angular Api 学习、翻译及理解 - - ngRoute Angular自带的路由

野兽的ng api学习 -- ngRoute ngRoute $routeProvider 配置路由的时候使用. 方法: when(path,route); 在$route服务里添加一个新的路由. path:该路由的路径. route:路由映射信息. controller:字符串或函数,指定控制器. controllerAs:一个用于控制器的标识符名称.. template:字符串或函数,html模板. templateUrl:字符串或函数,html模板的地址. resolve:对象,一个可选的

野兽的Angular Api 学习、翻译及理解 - - $templateCache 和 $templateRequest

野兽的ng api学习 -- $templateCache 和 $templateRequest $templateCache 第一次使用模板,它被加载到模板缓存中,以便快速检索.你可以直接将模板标签加载到缓存中,或者通过$templateCache服务. 通过script标签: <script type=”text/ng-template” id=”template.html”> <p>This is the content of the template</p> &

野兽的Angular Api 学习、翻译及理解 - - $sce 和 $sceDelegate

野兽的ng api学习 -- $sce 和 $sceDelegate $sce $sce 服务是AngularJs提供的一种严格上下文逸出服务. 严格上下文逸出服务(翻译水平有限,较渣...) 严格上下文逸出(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模式.由用户通过ng-bind-html绑定任意HTML语句就是这方面的一个例子.我们称这些上下文语境为特权或者SCE. 下面代码是简化了的ngBindHtml实现(当然,这不是完整版ngBindHtml源码

野兽的Angular Api 学习、翻译及理解 - - $q 承诺与延迟

野兽的ng api学习 -- $q $q 一个帮助处理异步执行函数的服务.当他们做完处理时,使用它们的返回值(或异常). 受 Kris Kowa’s Q 的启发,这是一个实现promise/deferred对象的启用. $q的两种方式---这是一个更类似于Kris Kowal Q或jQuery的递延实现,另一种在一定程度上类似的ES6承诺. Deferred Api 一个被$q.defer()调用的deferred的新实例. deferred对象的目的是暴露相关承诺实例,以及APIs被执行的成功

野兽的Angular Api 学习、翻译及理解 - - $animate

野兽的ng api学习 -- $animate $animate $animate服务提供了基本的DOM操作功能如在DOM里插入.移除和移动元素,以及添加和删除类.这个服务是ngAnimate的核心服务,为CSS和Javascript提供了高档次的动画. $animate在Angular核心都是有效的,无论如何,这个服务为了支持所有动画须包含ngAnimate模块.否则,$animate只能做简单的DOM操作. 方法: enter(element,parent,after,[done]); 在D

野兽的Angular Api 学习、翻译及理解 - - ngInclude、ngTransclude

野兽的 ng api 学习 - - ngInclude.ngTransclude 这2个都是HTML DOM嵌入指令 ngInclude 读取,编译和插入外部的HTML片段. 格式:ng-include=“value”<ng-include src=”value” onload=“ex”autoscroll=“str”></ng-include>  class=”ng-include:value” value:string类型  模板id或者模板url ex:表达式,载入的时候执行

野兽的Angular Api 学习、翻译及理解 - - ngIf、ngSwitch、ngHide/ngShow

野兽的 ng api 学习 - - ngIf.ngSwitch.ngHide/ngShow 在组合这些ng指令写到一篇文章里的时候,基本是有规则的,野兽把功能相似相近的一类大多会组合到一起,方便理解和记忆. 这篇的三个指令也都是对DOM元素的操作,页面上显示/隐藏的判断,添加/移除的判断. ngIf ngIf指令会根据指定的表达式返回的boolean类型值对该元素做添加到/移除出Dom树的操作. 格式:ng-if=“value” value:表达式  返回结果为boolean类型. 使用代码: