我正试图让我的量角器测试成wait
条件,但我的行为不一致。场景是这样的:
is loading
反馈并隐藏close button
。close button
重新定位,继续。所以,为了达到这个目的,我正在观察close button
。用户停止写入和去抖动事件之间的事件close button
是可见的。在debounced事件触发后(我们正在提出请求),is loading
元素显示和close button
隐藏[1]。完成后close button
再次显示。
非常感谢任何想法,谢谢!
1:为了简化测试,我让close button
消失至少200毫秒,这样在localhost中就不会消失超快速。这应该没问题,因为webdriver每100毫秒轮询一次等待条件。
所以,这是我的测试:
it('should show "no results" feedback when there are no results', function () {
app.getHomepage();
app.topMenu.searchLink.click();
app.search.termsInput.sendKeys('chipijanders');
app.search.waitForSearch();
expect(app.search.noResults.isDisplayed()).toBe(true);
// Checking the waitForSearch consistency
for (var i = 0; i < 10; i++) {
app.search.closeLink.click();
app.topMenu.searchLink.click();
app.search.termsInput.sendKeys('chipijanders');
app.search.waitForSearch();
expect(app.search.noResults.isDisplayed()).toBe(true);
}
});
这里waitForSearch
:
waitForSearch: function () {
var self = this;
browser.driver.wait(function() {
return self.closeLink.isDisplayed().then(function (isDisplayed) {
return !isDisplayed;
});
});
browser.driver.wait(function() {
return self.closeLink.isDisplayed().then(function (isDisplayed) {
return isDisplayed;
});
});
}
答案 0 :(得分:1)
最近有一个问题在等待下划线中的退出方法。我使用的解决方案是在protractor.conf中覆盖_.debounced,如此
onPrepare: function () {
var debounceRightNow = function () {
angular.module('debounceRightNow', []).run(
function () {
_.debounce = function (callback) {
return callback;
};
});
};
browser.addMockModule('debounceRightNow', debounceRightNow);
}
不确定这是否可以回答您的问题,但这是一个非常好的解决方案