как дождаться выпадающего населения перед выполнением тестов транспортира e2e?

Я тестирую сценарий, в котором есть 3 флажка, которые заполняются на основе вызова службы и ответа http get.

У меня есть, когда я запускаю тесты с protractor conf.js, выпадающие списки еще не заполнены ответом от ответа http get, и поэтому, когда я пытаюсь что-либо протестировать, браузер останавливается, и тесты не выполняются.

Есть ли способ, чтобы транспортир мог подождать, прежде чем запускать тесты для заполнения этих раскрывающихся списков?

conf.js:
// An example configuration file.
exports.config = {
  //directConnect: true,

  // Capabilities to be passed to the webdriver instance.
  capabilities: {
    'browserName': 'chrome'
  },

  // Framework to use. Jasmine 2 is recommended.
  framework: 'jasmine2',

  // Spec patterns are relative to the current working directly when
  // protractor is called.
  specs: ['e2e/*.js'],

  baseUrl: 'http://localhost:4000/',


  // Options to be passed to Jasmine.
  jasmineNodeOpts: {
    defaultTimeoutInterval: 30000
  }
};

test file:

var select = element(by.model('make'));
console.log(select);
select.$('[value="acura"]').click();

это не удается в событии щелчка, потому что, когда этот тест запускается, выбор не имеет элементов option, поскольку выбор заполняется из ответа json http get.

Заранее спасибо!!


person pj013    schedule 30.09.2015    source источник


Ответы (3)


вы можете попробовать использовать метод ниже; перед вызовом клика.

browser.waitForAngular();
person Arun James    schedule 30.09.2015
comment
доступ к выбору должен осуществляться через транспортир, используя browser.driver.isElementPresent(elementToFind).then(function(isPresent){ element(elementToFind).click } - person Arun James; 30.09.2015

Используйте встроенный метод транспортира wait() с использованием ExpectedConditions, который ожидает, что раскрывающийся список будет заполнен. Вот как -

var select = element(by.model('make'));
browser.wait(protractor.ExpectedConditions.presenceOf(select.$('[value="acura"]')), 10000)
.then(function(){
    select.$('[value="acura"]').click();
});

Надеюсь, поможет.

person Girish Sortur    schedule 30.09.2015
comment
вот что я получаю: Сообщение: Ошибка: время ожидания истекло через 10004 мс - любая идея - person pj013; 30.09.2015
comment
@ jp310, можете ли вы обновить HTML-код для раскрывающегося списка? Также, сколько времени требуется для заполнения вариантов? - person Girish Sortur; 30.09.2015

используйте 1_-

browser.wait(function(){
     return elementPresent.isPresent();
     }).then(function(){
         element.click();
})
person Rahul Vig    schedule 30.09.2015