Селектор '$' в транспортире

Я видел во многих примерах, подобных этому $('.selector'), и я также использую это. Итак, что делает эта переменная $. Это то, что я получил из docs транспортира.

Вызовы $ могут быть объединены в цепочку для поиска элементов внутри родителя.

В документах нет примеров, в которых используется только $. Мы используем $ для цепочки с селектором element.

Также $('.selector') сам по себе является элементом, когда мы делаем это element($('.selector')), это ошибка.

Итак, как использовать этот селектор $ в транспортире. Обладает ли он всеми функциями JQuery $. Я попробовал $('.selector').children, который говорит, что children не является функцией.

Любая помощь приветствуется.

Спасибо!


person Vishnu Sureshkumar    schedule 22.04.2016    source источник
comment
$ означает jQuery. Таким образом, $(".selector") означает все элементы с классом в качестве селектора.   -  person Ani Menon    schedule 22.04.2016
comment
См.: angular.element встроенное в Angular подмножество jQuery => jqLite   -  person Ani Menon    schedule 22.04.2016
comment
используйте angular.element вместо $, он работает только с частью документа директивы, а не со всем html-документом   -  person UKoehler    schedule 22.04.2016


Ответы (3)


Это выглядит как синтаксис jQuery, но это не так, это часть Protractor. Вот почему .children выдает ошибку, потому что на самом деле мы не используем jQuery. $ — это сокращенная версия element(by.css()), т.е.

$('my-css'); точно такое же, как element(by.css('my-css'));

У них также есть $$, который совпадает с element.all(by.css()).

Несмотря на отсутствие документации, его не необходимо использовать для создания цепочки для поиска дочерних элементов. то есть с использованием демонстрации транспортира Джули (я изменил пример):

describe('Protractor Demo App', function() {
  it('read the header', function() {
    browser.get('http://juliemr.github.io/protractor-demo/');
    $('h3').getText().then(function (val) {
      console.log(val);
    });
  });
});

Это выводит заголовок элемента h3, который я нашел. $ и $$ — это просто сокращение для селекторов css.

Источник: здесь для $$, здесь для $ и здесь для получения дополнительной информации

Также я нашел хороший документ (хотя в нем не упоминается использование $$ : http://luxiyalu.com/protractor-locators-selectors/

person Gunderson    schedule 22.04.2016
comment
Спасибо за указание на то, что $('my-css') совпадает с element(by.css('my-css')), который не упоминается в документации. - person Vishnu Sureshkumar; 22.04.2016
comment
Да, по какой-то причине это не задокументировано в API-интерфейсе Protractor и упоминается здесь только один раз: github.com/angular/protractor/blob/master/docs/locators.md - person Gunderson; 22.04.2016

Мы внесли обновления в API Protractor для $. Кроме того, в спецификациях Protractor есть несколько мест, где используется цепочка $. См. ниже (из spec/async_spec.js):

  it('should work with synchronous actions', function() {
    var increment = $('#increment');
    increment.$('.action').click();

    expect(increment.$('.val').getText()).toEqual('1');
  });
person cnishina    schedule 08.11.2016

Это правильный документ API для $:

«Ярлык для запроса документа напрямую с помощью css. element(by.css('.abc')) эквивалентен $('.abc')»

http://www.protractortest.org/#/api?view=build $

person Andres D    schedule 23.04.2016