Выделите все элементы в элементе с помощью транспортира
Есть ли надежный способ выбрать все элементы внутри элемента? Давайте предположим, что у нас есть следующая структура
...
<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"); } }