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 链)。它们都可以接受回调,也可以与 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