Выделите все элементы в элементе с помощью транспортира

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

...
<div class="outer">
     <div class="inner"></div>
     <div class="inner"></div>
</div>
...

И кусок кода, который выбирает outer для нас это следующее:

outer: { get: function () { return element(by.css(".outer")); } }

Теперь, если я хочу выбрать все inner div, со следующим кодом:

inner: { get: function () { return this.outer.element.all(by.css(".inner")); } }

Я получаю сообщение о том, что element.all не является функцией. Есть ли хороший способ обойти это?

1 ответ

Решение

Идея, которую вы пытаетесь использовать, на самом деле верна - она ​​называется "цепочкой" и была добавлена ​​в Protractor 0.17.0, просто вам не нужен этот промежуточный element, Заменить:

this.outer.element.all(by.css(".inner"))

с:

this.outer.all(by.css(".inner"))

Также обратите внимание, что есть $ а также $$ ярлыки для element(by.css()) а также element.all(by.css()) - если вы примените их:

outer: { get: function () { return $(".outer"); } }
inner: { get: function () { return this.outer.$$(".inner"); } }
Другие вопросы по тегам