在我的Angular应用程序中,我正在使用Protractor编写应用程序的自动化测试套件,我遇到了如何测试微调器,等待微调器从屏幕上消失的问题。 我试图创建一些可重用的函数来处理微调器,看起来它工作正常,但是当微调器位于弹出窗口时,我收到错误:" ...失败:陈旧元素引用:元素未附加到页面文档...",因为我理解量角器无法找到指定的元素,因为在关闭弹出窗口后,微调器从弹出窗口中删除。 在我的函数中,我试图使用这个量角器方法: browser.wait(EC.invisibilityOf($('#abc')),5000); browser.wait(spinner.isDisplayed(),5000); 据我所知,原因是browser.wait在循环内部运行,直到它实现或发生超时,但我不知道如何修复它。请帮忙......
我的欲望功能以及额外的礼物检查: this.selector - 父元素(按钮)
waitBtnSpinner() {
let spinner = this.selector.element(by.css('.btn-spinner'));
spinner.isPresent().then((isPresent) => {
if(isPresent) {
spinner.isDisplayed().then((isDisplayed) => {
return browser.wait(this.EC.invisibilityOf(spinner), 10000);
})
} else {
return isPresent;
}
});
};
答案 0 :(得分:0)
更可靠的方法是等待单个选择器返回零可见微调器。 为了在发生故障时提供正确的消息,我将实现“条件”:
var By = webdriver.By;
var EC = webdriver.until;
// define a condition that is true when the locator doesn't match any element
EC.noElement = function (locator, message) {
return new EC.Condition(message + ' ' + locator, function(driver) {
return driver.findElements(locator).then(function(elements) {
return elements.length === 0;
});
});
};
// define a condition that is true when there is no visible spinner
EC.noSpinner = EC.noElement(By.css('.spinner[ng-sow]'), 'for no visible spinner');
// usage to wait for no visible spinner
driver.wait(EC.noSpinner, 10000);
请注意,您需要使用与页面中可见微调器匹配的定位器更新Css定位器“.spinner [ng-sow]”。
答案 1 :(得分:0)
试试这个。
A ob=new B ();
((B)ob).C ();
希望这会有所帮助。 :)