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 鏈)。它們都可以採用回呼,或與 promise 串連。例如
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