我需要找到一种方法,在我的e2e测试(angular2项目)中等待被测试的元素获得特定的CSS类。
是否有任何可能的方法,而不使用browser.wait()
或browser.sleep()
?
我需要找到一种方法,在我的e2e测试(angular2项目)中等待被测试的元素获得特定的CSS类。
是否有任何可能的方法,而不使用browser.wait()
或browser.sleep()
?
你在问题中甚至使用了“等待”这个词,但却要求不使用内置的等待函数来解决问题。我认为这样做没有太多意义。
我们之前已经解决过类似的问题,并想出了一个自定义等待函数,它可以作为browser.wait()
的预期条件来使用:
function waitForCssClass(elementFinder, desiredClass) {
return function () {
return elementFinder.getAttribute('class').then(function (classValue) {
return classValue && classValue.indexOf(desiredClass) >= 0;
});
};
};
browser.wait(waitForCssClass($("#myid"), "desiredClass"), 5000);
$('.className')
或带有作用域的 .scope').$('.className')
作为预期条件的元素查找器。 - wswebcreation此函数等待一个类从元素中消失,需要传入元素对象(ElementFinder)和要检查的CSS类。
static async waitCssClassToDisappear(elem:ElementFinder, cssClass:string, timeout?: number) {
await browser.wait(()=>{
return elem.getAttribute('class').then((value) =>{
return value.indexOf(cssClass) < 0;
});
}, timeout ? timeout : Utils.defaultTimeout, 'CSS class did not disappear within specified timeout');
}
browser.wait()
的情况下进行等待吗?这没有意义...因为这就是它的作用。用来等待某件事。 - Gunderson