无法测试是否在Protractor中选中了复选框

时间:2017-02-11 11:35:33

标签: javascript selenium selenium-webdriver jasmine protractor

我正在尝试创建一个测试来检查是否选中了jqx网格中的Select all按钮。这是我在jq.spec.js中编写的虚拟测试代码:

describe('should check jq widgets', function() {

it('should check if checkbox is checked or not', function() {
    browser.ignoreSynchronization = true;
    browser.get('http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/checkboxselection.htm?arctic');
    browser.wait(protractor.ExpectedConditions.visibilityOf($('#contenttablejqxgrid')),50000);
    $("#columntablejqxgrid>div>div>div").click();
        expect($("#columntablejqxgrid>div>div>div").isSelected()).toEqual(true);
    });
});

我的jq.conf.js:

exports.config = {
  directConnect: true,
  framework: 'jasmine',
  specs: ['jq.spec.js'],

    jasmineNodeOpts: {
        showColors: true,
        defaultTimeOutInterval: 3000000
    },
}

即使选择了chechbox,我的测试也将实际条件视为false。

Failures:
1) should check jq widgets should check if checkbox is checked or not
  Message:
    Expected false to equal true.
  Stack:
    Error: Failed expectation

我多次更改了我的定位器以查看它是否与定位器一起使用(使用了不同的子div,span)。

1 个答案:

答案 0 :(得分:4)

由于这不是标准复选框,因此您需要以某种方式处理状态检查。这个示例测试对我有用......

describe('should check jq widgets', function() {

    it('should check if checkbox is checked or not', function() {
        var firstCheckbox = $$('.jqx-checkbox-default').first();

        browser.get('http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/checkboxselection.htm?arctic');
        browser.wait(protractor.ExpectedConditions.visibilityOf($('#contenttablejqxgrid')),5000, 'grid did not display');
        firstCheckbox.click();

        expect(isChecked(firstCheckbox)).toBe(true);
    });
});

var isChecked = function(element) {
    return element.$('.jqx-checkbox-check-checked').isPresent().then(function(checked) {
         return checked;
    });
};