keep-observers
Version:
This is a monitoring service applied to the web side Support Elasticsearch+kiban The middleware extension interface is provided by means of plug-in service compositionkeep-observers
225 lines (160 loc) • 6.33 kB
Markdown
1.Expect
在browser实例上以.expect.element开头的BDD(行为驱动测试)风格的接口,0.7及以上版本nightwatch可用。通过.element方法传入一个selector(参考querySelector或者jq的语法)获取到dom实例,通过.text、.value、.attribute等方法获取到实例属性。还有一些语意明确的修饰:
http://nightwatchjs.org/api#expect-matchers
to
be
been
is
that
which
and
has
with
at
does
of
再加上比较判断:
.equal(value)/.contain(value)/.match(regex)
.selected
.present
复制代码还有时间修饰.before(ms)(表示一段时间之内)、.after(ms)(表示一段时间之后)。就像造句一样:某某元素的某某属性(在某某时间)(不)等于什么值,这就是BDD风格的测试代码。例如:
this.demoTest = function (browser) {
browser.expect.element('body').to.have.attribute('data-attr');
browser.expect.element('body').to.not.have.attribute('data-attr');
browser.expect.element('body').to.not.have.attribute('data-attr', 'Testing if body does not have data-attr');
browser.expect.element('body').to.have.attribute('data-attr').before(100);
browser.expect.element('body').to.have.attribute('data-attr')
.equals('some attribute');
browser.expect.element('body').to.have.attribute('data-attr')
.not.equals('other attribute');
browser.expect.element('body').to.have.attribute('data-attr')
.which.contains('something');
browser.expect.element('body').to.have.attribute('data-attr')
.which.matches(/^something\ else/);
};
复制代码2.Assert
以.assert/.verify开头的两套相同的方法库,区别是assert如果断言失败则退出整个测试用例所有步,verify则打印后继续进行。
this.demoTest = function (browser) {
browser.verify.title("Nightwatch.js");
browser.assert.title("Nightwatch.js");
};
复制代码有如下判断方法:
.attributeContains(selector, attribute, expected[, message])
检查指定元素(selector)的指定属性(attribute)是否包含有期待的值(expected)打印出指定信息(可选填的message)其他方法讲解类似,不一一赘述
.attributeEquals(selector, attribute, expected[, message])
检查元素指定属性是否等于预期
.containText(selector, expectedText[, message])
包含有指定的文本
.cssClassPresent(selector, className[, message])
检查元素指定class是否存在
.cssClassNotPresent(selector, className[, message])
检查元素指定class是否不存在
.cssProperty(selector, cssProperty, expected[, message])
检查元素指定css属性的值是否等于预期
.elementPresent(selector[, message)
检查指定元素是否存在于DOM中
.elementNotPresent(selector[, message)
检查指定元素是否不存在于DOM中
.hidden(selector[, message)
检查指定元素是否不可见
.title(expected[, message])
检查页面标题是否等于预期
.urlContains(expectedText[, message])
检查当前URL是否包含预期的值
.urlEquals(expected[, message])
检查当前URL是否等于预期的值
.value(selector, expectedText[, message])
检查指定元素的value是否等于预期
.valueContains(selector, expectedText[, message])
检查指定元素的value是否包含预期的值
.visible(selector[, message)
检查指定元素是否可见
复制代码3.Commands
很多命令的读写,可以操作BOM、DOM对象:
.clearValue(selector[, message])
清空input、textarea的值
.click(selector[, callback])
callback为执行完命令后需要执行的回调
.closeWindow([callback])
.deleteCookie(cookieName[, callback])
.deleteCookies([callback])
.end([callback])
结束会话(关闭窗口)
.getAttribute(selector, attribute, callback)
.getCookie(cookieName, callback)
.getCookies(callback)
.getCssProperty(selector, cssProperty, callback)
.getElementSize(selector, callback)
.getLocation(selector, callback)
.getLocationInView(selector, callback)
.getLog(typeString, callback)
获取selenium的log,其中type为string或者function
.getLogTypes(callback)
.getTagName(selector, callback)
.getText(selector, callback)
.getTitle(callback)
.getValue(selector, callback)
.init([url])
url方法的别名,如果不传url则跳转到配置中的launch_url
.injectScript(scriptUrl[, id, callback])
注入script
.isLogAvailable(typeString, callback)
typeString为string或者function,用来测试log的type是否可用
.isVisible(selector, callback)
.maximizeWindow([callback])
最大化当前窗口
.moveToElement(selector, xoffset, yoffset[, callback])
移动鼠标到相对于指定元素的指定位置
.pause(ms[, callback])
暂停指定的时间,如果没有时间,则无限暂停
.perform(callback)
一个简单的命令,允许在回调中访问api
.resizeWindow(width, height[, callback])
调整窗口的尺寸
.saveScreenshot(fileName, callback)
.setCookie(cookie[, callback])
.setValue(selector, inputValue[, callback])
.setWindowPosition(offsetX, offsetY[, callback])
.submitForm(selector[, callback])
.switchWindow(handleOrName[, callback])
.urlHash(hash)
.useCss()
设置当前选择器模式为CSS
.useXpath()
设置当前选择器模式为Xpath
.waitForElementNotPresent(selector, time[, abortOnFailure, callback, message])
指定元素指定时间内是否不存在
.waitForElementNotVisible(selector, time[, abortOnFailure, callback, message])
指定元素指定时间内是否不可见
.waitForElementPresent(selector, time[, abortOnFailure, callback, message])
.waitForElementVisible(selector, time[, abortOnFailure, callback, message])
复制代码简单的例子:
this.demoTest = function (browser) {
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.");
});
};
复制代码4.webdriver protocol
可以操作一些更底层的东西,比如:
Sessions
Navigation
Command Contexts
Elements
Element State
Element Interaction
Element Location
Document Handling
Cookies
User Actions
User Prompts
Screen Capture
Mobile Related
简单的例子:
module.exports = {
'demo Test' : function(browser) {
browser.element('css selector', 'body', function(res) {
console.log(res)
});
}
};