使用Protractor + Angular在进行ajax调用时测试事件

时间:2015-02-24 10:57:51

标签: angularjs protractor

我正在使用量角器1.7.0和角度1.2。

我有一个功能,当我点击一个按钮说'加载结果'时,ajax请求被触发,同时结果回来我看到一个按钮说'取消请求'(取消正在进行的ajax请求,这个按钮获取收到ajax响应时隐藏。)

现在要在量角器中测试它,我正在做这样的事情

//to load the results
element(by.css('#load-results')).click();

//to cancel ongoing ajax request to load results    
element(by.css('.search-cancelled')).then(function(){
  element(by.css('.search-cancelled')).click();
});

它给我一个错误,说明元素不可见。

据我所知,量角器在执行下一个语句之前等待角度来解决它的承诺。所以直到它达到这个代码为止

element(by.css('.search-cancelled')).then(function(){
      element(by.css('.search-cancelled')).click();
    }); 

ajax调用已经返回,这就是元素被隐藏的原因。

有没有办法可以让量角器不等待角度承诺并在ajax请求进行时执行我的代码?

1 个答案:

答案 0 :(得分:1)

看起来你可以这样做:

$('#load-results').click();
waitElementToBeShown($('.search-cancelled'));
$('.search-cancelled').click();

以下是帮助功能的代码:

var waitElementToBeShown = function (elm) {
    browser.wait(function () {
        return elm.isPresent();
    },15000);
    browser.wait(function () {
        return elm.isDisplayed();
    },15000);
};