如何使用Webdriver.io与Chai作为承诺来验证css属性

时间:2015-02-20 22:42:01

标签: mocha chai webdriver-io chai-as-promised

目前正在使用带有Mocha,Chai和Chai-as-Promised的Webdriver.io但是我很难在尝试验证CSS属性时获得验证的承诺:

代码:

'use strict';
var chai = require('chai'),
    chaiAsPromised = require('chai-as-promised');

chai.use(chaiAsPromised);
chai.should();
chaiAsPromised.transferPromiseness = browser.transferPromiseness;

describe('Buttons', function() {

    var buttonSelector = '.button';

    browser.url('http://localhost/buttons.html');

    it('should have square corners by default', function (done) {
        browser
            .getCssProperty(buttonSelector, 'border-top-left-radius').should.eventually.become('0px')
            .call(done);
    });
});

但是我收到此错误:

  

默认按钮:微小尺寸       1)默认情况下应该有方角1失败

     

1)默认按钮:默认情况下,Tiny Size应该有方角:         未捕获的AssertionError:期望{Object(property,value,...)}深度相等'0px'0在assertEqual上传递(2s)   (/node_modules/chai/lib/chai/core/assertions.js:393:19)

  at ctx.(anonymous function) (/node_modules/chai/lib/chai/utils/addMethod.js:40:25)
  at WebdriverIO.<anonymous> (/node_modules/chai-as-promised/lib/chai-as-promised.js:302:26)

  at /node_modules/webdriverio/lib/utils/PromiseHandler.js:85:52
  at process._tickCallback (node.js:419:13)

2 个答案:

答案 0 :(得分:1)

getCSSProperty返回一个像

这样的对象
{
    property: 'width',
    value: '100px',
    parsed: {
        type: 'number',
        string: '100px',
        unit: 'px',
        value: 100
    }
}

您的错误消息显示0px与实际为真的对象不相等。在这种情况下,最好使用回调。有可能使用“Chai Things”插件。

答案 1 :(得分:0)

根据documentation,它不会返回承诺?

看起来你应该使用回调。

编辑:好的,我可能误解了文档,而不是承诺中输出的值不是您所期望的。如果查看文档,可以看到回调产生的内容。所以我们可以期待它与承诺一样。然后,你可以使用这样的东西:

browser.getCssProperty(buttonSelector, 'border-top-left-radius').should.eventually.have.property('value', '0px').call(done);