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‘);
取反 写在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()检查某元素给定的属性是否有预期的值
参数:
selector,用来定位元素
attribute,属性名
expected,期望包含的值
message (optional),测试结果中的信息说明
eg. browser.assert.attributeContains(‘#someElement‘, ‘href‘, ‘google.com‘);
.attributeEquals()同上(attributeContains)
.containsText()参数:
cssSelector
expectedText
msg(Optional)
eg. browser.assert.containsText("#main", "The Night Watch");
.cssClassPresent()检查元素是否有指定的CSS类名
参数:
cssSelector,用来定位元素
className,期望有的类名
message (optional),测试结果中的信息说明
eg. browser.assert.cssClassPresent("#main", "container");
.cssClassNotPresent()楼上(.cssClassPresent)取反
.cssProperty()检查元素的指定属性是否是期望的状态
参数:
cssSelector,用来定位元素
cssProperty,属性
expected,
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(‘‘);
.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");
CommandsCommands可在页面上执行不同的操作,通常包含两个及以上的页面驱动协议行为.
回调函数以下的方法均支持回调函数.回调函数将在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.");
});
关闭当前窗口,当你使用多个窗口时适用
.deleteCookie()删除cookie
NightWatch API学习之expect,assert