这很奇怪,在我们验证测试用例不存在于dom中时,量角器执行会持续无限时间。 以下是我们尝试的代码,但它不知道为什么。 它一直在等待this.columnNamesInTableSingle元素,即使它不存在于DOM中,我们只需要验证
var el = this.columnNamesInTableSingle;
browser.wait(protractor.ExpectedConditions.not(protractor.ExpectedConditions.presenceOf(el)),5000);
expect(this.columnNamesInTableSingle.isPresent()).toBe(false);
this.columnNamesInTableSingle.then(a=>{
// console.log(a.length+"==============================")
// },abc=>{
// console.log(abc)
// })
答案 0 :(得分:0)
我知道这篇文章很老但我已经实现了一个函数,可以用来测试DOM中是否存在(或不存在)元素而没有任何wait
:
3个参数:
ElementFinder | ElementFinder[]
已定位; string
目标名称(仅用于登录); boolean
切换您的控件(测试是否存在); 功能:
export async function checkField(field: any, fieldName: string, present?: any) {
let text: string;
if (present === false) {
if (field.length > 0) {
field.forEach(async el => {
try {
text = await el.getText();
expect('should not be present (' + fieldName + ')').toEqual('but it is');
} catch (e) {
expect(el.isPresent()).toBe(present);
}
});
} else {
try {
text = await field.getText();
expect('should not be present (' + fieldName + ')').toEqual('but it is');
} catch (e) {
expect(field.isPresent()).toBe(present);
}
}
} else {
if (field.length > 0) {
field.forEach(async el => {
try {
text = await el.getText();
expect(el.isPresent()).toBe(true);
} catch (e) {
expect('is present (' + fieldName + ')').toEqual('but i can\'t find it');
throw e;
}
});
} else {
try {
text = await field.getText();
expect(field.isPresent()).toBe(true);
} catch (e) {
expect('is present (' + fieldName + ')').toEqual('but i can\'t find it');
throw e;
}
}
}
}
希望这仍然有用(我知道,可写得更好)
如果这有效并且满足您的问题,请考虑关闭它!