我正在尝试创建一个测试来检查是否选中了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)。
答案 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;
});
};