使用量角器,我正在测试单击双文件图标时是否列出了复制的文件(如果有)。所以我想创建一个测试,在该测试中我将检查双文件图标并单击它,并期望该列表已打开。但是,如果没有双文件图标,我想记录消息。
我尝试过if / else并尝试/捕获 isDisplayed(),ispresent(),(in)visibilityOf() 并且总是相同的结果:如果显示了element,则测试通过。 如果未显示元素,则测试失败
it('should check if assignment has double files', () => {
try {
element.dubleFilesIcon.isDisplayed().then(function() {
console.log('There ARE double files for this assignment!!!');
assignmentHeader.doubleFiles();
expect(element.doubleFilesindicator.isDisplayed()).toBe(true);
}, function(err) {
console.error('error' + err);
throw err;
});
} catch (err) {
console.log('There ARE NO double files for this assignment!!!');
expect(element.doubleFilesindicator).toBe(false);
}
});
这是错误: 1)作业标头测试用例应检查作业是否包含双重文件 -失败:使用定位器找不到元素:按(css选择器,'')
我显然做错了,但我不知道怎么办
答案 0 :(得分:0)
isDisplayed()
用于知道DOM中存在的元素。您需要先使用isPresent()
element.dubleFilesIcon.isPresent().then(function() {
console.log('There ARE double files for this assignment!!!');
assignmentHeader.doubleFiles();
expect(element.doubleFilesindicator.isDisplayed()).toBe(true);
});
此外,如果您希望测试在不存在/未显示的情况下失败,则可以使用以下方法:
it('should check if assignment has double files', (done) => {
element.dubleFilesIcon.isPresent().then(function(present) {
if (present) {
console.log('There ARE double files for this assignment!!!');
assignmentHeader.doubleFiles();
expect(element.doubleFilesindicator.isDisplayed()).toBe(true);
done();
} else {
// Here I think you want to test if dubleFilesIcon is NOT present
// Then expect the files indicator not to be present, which is a bit
// redundant. But anyway:
expect(element.doubleFilesindicator.isPresent()).toBe(false);
}
});
});
答案 1 :(得分:0)
最后我已经做到了:只是在else块中添加了done.call()。这是工作。不知道如何,但确实如此:
type Name = 'a' | 'b' | 'c';
type Items =
{
[Key in Name]?: Item<Key>;
};
interface Item <Name>
{
name: Name;
};
const items: Items =
{
// Type valid
a:
{
name: 'a'
},
// Type error
b:
{
name: 'c'
}
};