按照承诺使用量角器和柴检查元素是否存在



我在测试我的节点.js应用程序中缺少元素时遇到问题。

我有一个enterBtn按钮,单击时,它会显示resultsTable和一个clearBtnenterBtn始终存在。

我正在尝试测试单击clearBtnresultsTable消失,但我遇到了麻烦。

'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;

我不确定发生了什么...

任何帮助将不胜感激!谢谢。

点击 clearBtn 后,元素会立即消失吗?
如果没有,请尝试在 clearBtn.click() 之后放置睡眠,以确保对象在预期之前消失。

您还可以通过使用 expect(resultsTable.isPresent()).toBe(false) 来
简化您的期望

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

相关内容

  • 没有找到相关文章

最新更新