chai-webdriver-exec 
为 Chai 提供 selenium-webdriver 支持,用于断言执行的脚本。此插件与 chai-webdriver 插件互补,后者只支持基于 DOM 的断言。
断言
所有断言都使用 exec
机制,并与 chai.expect()
一起使用。
chai.expect('return document.childElementCount').exec.to.equal(1)
chai.expect('return document.childElementCount').exec.to.exist
要执行的脚本是 chai.expect()
的第一个参数,并将传递给 executeScript()。为了使断言生效,脚本必须有返回值。
有关可能的断言列表,请参阅 测试文件。基本上,除了:arguments
、itself
、extensible
、sealed
、frozen
、throw
、respondTo
、change
、increase
、decrease
(由于远程执行脚本的性质)之外,所有 BDD 断言 都受支持。
异步流程
所有这些断言都被假定为异步的(使用 selenium-webdriver 的 promise 链)。它们都可以接受回调,也可以与 promises 连接。例如
expect(script).exec.to.have.ownProperty('string', function(){...})
expect(script).exec.to.have.ownProperty('string').then(function(){...})
请注意,如果使用 selenium-webdriver/testing 包装器,则不需要这种用法。
用法
npm i --save-dev chai-webdriver-exec
然后在您的测试文件中
var chaiWebdriverExec = require('chai-webdriver-exec')
chai.use(chaiWebdriverExec(driver))
示例
var webdriver = require('selenium-webdriver'),
test = require('selenium-webdriver/testing')
var driver = new webdriver.Builder()
.forBrowser('firefox')
.build()
var chai = require('chai')
var chaiWebdriverExec = require('chai-webdriver-exec')
chai.use(chaiWebdriverExec(driver)) // here you hook it up
test.describe('some cool feature', function() {
this.timeout(10000)
test.it('should work as expected', function() {
driver.get('http://github.com');
chai.expect('return window.scrollX').to.be.a('number')
})
})
测试
npm test