Protractor element.isPresent возвращает обещание или логическое значение? - PullRequest
0 голосов
/ 11 марта 2019

В описании сказано, что он возвращает логическое значение, но документация javascript заявляет, что возвращает обещание:

  /**
   * Returns true if there are any elements present that match the finder.
   *
   * @alias element.all(locator).isPresent()
   *
   * @example
   * expect($('.item').isPresent()).toBeTruthy();
   *
   * @returns {Promise<boolean>}
   */
  isPresent(): wdpromise.Promise<boolean> {
    return this.count().then((count) => {
      return count > 0;
    });
  }

Я относительно новичок во всех аспектах транспортира, поэтому я немного запутался с этим.

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Возвращает Обещание, как описано в теге @returns и документации isElementPresent .

Вы правы, что "Возвращает истину, если" в документации немного сбивает с толку: поскольку все методы запросов документов WebDriver являются асинхронными, включая getText и isEnabled , все они возвращают обещания, которые соответствуют запрашиваемым вами значениям. Вы можете сделать вывод «Возвращает истину», что означает «Возвращает обещание, которое становится истинным, если».

Кроме того, Транспортир использует jasminewd2, что задокументировано для автоматического развертывания обещаний . Это означает, что вы можете использовать утверждение expect(), как если бы значение было синхронным, что еще больше размывает границу между значениями и обещаниями, даже если оно делает само утверждение более читабельным.

0 голосов
/ 11 марта 2019

Возвращает обещание, которое необходимо выполнить, либо с .toBe(true) (логическим значением), либо с чем-то еще, например:

elm.isPresent()
   .then(function(result){
       //do something
   });
...