我无法测试node.js应用中是否缺少元素。
我有一个enterBtn
按钮,点击后会显示resultsTable
和clearBtn
。 enterBtn
始终存在。
我正在尝试测试resultsTable
在我点击clearBtn
时消失,我遇到了麻烦。
'use strict';
const chai = require('chai');
chai.use(require('chai-as-promised'));
chai.should();
const expect = chai.expect;
require('./lib/test-helper');
const until = protractor.ExpectedConditions;
describe('My App', function() {
it('should clear resultsTable clearBtn is clicked', function(){
var resultsTable = element(by.id('results-table'));
clearBtn.click();
expect(resultsTable.isPresent()).to.eventually.be.false;
});
});
我也试过这样做:
resultsTable.isPresent().then(function(bln) {
expect(bln).to.equal(false);
});
这也不起作用:
"Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test."
但是,如果我尝试使用下面的代码测试始终存在的enterBtn
的存在,那么它可以正常工作。
var enterBtn = element(by.id('enter'));
expect(enterBtn.isPresent()).to.eventually.be.true;
我不确定发生了什么......
任何帮助将不胜感激!感谢。
答案 0 :(得分:0)
点击clearBtn后,元素会立即消失吗? 如果不是,请尝试在clearBtn.click()之后进行休眠,以确保该对象在预期之前消失。
您还可以使用
来简化您的期望
期望(resultsTable.isPresent())。砥(假)
describe('My App', function() {
it('should clear resultsTable clearBtn is clicked', function(){
var resultsTable = element(by.id('results-table'));
clearBtn.click();
browser.sleep(2000);
resultsTable.isPresent().then(function(bln) {
expect(bln).toBe(false);
});
});
});
如果对象可能需要2秒以上的时间,那么你可以尝试使用这个递归函数https://stackoverflow.com/a/43679616/7761311