【发布时间】:2014-07-07 11:04:47
【问题描述】:
我正在尝试将我的量角器测试设为wait 一个条件,但我的行为不一致。场景是这样的:
- 用户在搜索框中输入了一些字词
- debounced 事件被触发。因此,这取决于用户何时停止输入。
- 我们发出一个API请求,同时我们显示
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;
});
});
}
【问题讨论】:
标签: angularjs testing protractor