触发ng-change

时间:2015-08-21 13:51:42

标签: javascript angularjs protractor

我在angularjs网站上练习。在那里,有一个搜索栏,只要字符串长度超过2个字符,就可以对字段中的任何变化进行研究。

反正。使用Protractor,我使用sendKeys输入名称,期望搜索开始,但我无法获得任何结果。而当我手动操作时,它工作正常。 这或多或少是我用来输入研究的代码片段:

describe('Search Field', function(){

  browser.get('https://docs.angularjs.org/api');
  it('displays a frame with the results of the search', function(){
     var searchField = element(by.css('.search-query'));
     var searchResult= element(by.css('.search-results-container'));
     searchField.click();
     searchField.sendKeys('angular');

     //I use a wait function here to wait for the results
     browser.wait(function () {
             return searchResult.isDisplayed();
         },10000);         
     //Before doing anything else, I expect to see the results
     expect(searchResult.isPresent()).toBe(true);
     expect(searchResult.isDisplayed()).toBe(true);
  });
});

,搜索字段代码为:

<input type="text" name="as_q" class="search-query ng-valid ng-touched ng-dirty ng-valid-parse" placeholder="Click or press / to search" ng-focus="focus=true" ng-blur="focus=false" ng-change="search(q)" ng-model="q" docs-search-input="" autocomplete="off" style="">

似乎永远不会使用Protractor执行seach(q)函数。

您是否了解此问题背后的原因?

修改

我设法使用evaluate()显示搜索结果框。代码变为:

describe('Search Field', function(){

  browser.get('https://docs.angularjs.org/api');
  it('displays a frame with the results of the search', function(){
     var searchField = element(by.css('.search-query'));
     var searchResult= element(by.css('.search-results-container'));
     searchField.click();
     topBanner.searchField.evaluate('search("angular")');

     //I use a wait function here to wait for the results
     browser.wait(function () {
             return searchResult.isDisplayed();
         },10000);         
     //Before doing anything else, I expect to see the results
     expect(searchResult.isPresent()).toBe(true);
     expect(searchResult.isDisplayed()).toBe(true);
  });
});

但奇怪的是,如果我在评估之前离开sendkeys()命令,那么搜索结果将不会出现。

所以我认为这是一种解决方法,它使我能够处理我想要达到的实际框架。但我想知道如何在没有这个技巧的情况下达到那个框架。

0 个答案:

没有答案