chai-webdriver-exec Build Status

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()。為了讓斷言起作用,腳本必須有傳回值。

有關可能的斷言列表,請參閱測試檔案。基本上,除了:argumentsitselfextensiblesealedfrozenthrowrespondTochangeincreasedecrease (由於遠端執行腳本的性質),支援 所有 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