Как найти следующий элемент в транспортире? - PullRequest
0 голосов
/ 07 мая 2020

Учитывая, что у меня есть следующий код HTML:

<div class="someGenericClass">
   <input name="someGenericName">
   <label>not important</label>
</div>
<div class="someGenericClass">
   <input name="someGenericName">
   <label>not important</label>
</div>
<div class="someGenericClass">
   <input name="someGenericName">
   <label>Text I need to find in my test</label>
</div>

Как мне найти текст метки в этом случае? У него нет атрибута. Я попытался найти первый элемент, а затем следующий элемент, но мне чего-то не хватает:

element(by.name('someGenericName')).element(by.xpath('following::label'));

Также пробовал:

 element(by.name('someGenericName')).element(by.xpath('following-sibling::label'));

EDIT: класс не является уникальным. Он многократно используется в DOM.

Что произойдет, если DOM изменится? element.all кажется плохой идеей, не так ли?

1 Ответ

0 голосов
/ 07 мая 2020

element.all должен работать нормально

HTML View

<div id='id1' class="parent">
  <ul>
    <li class="foo">1a</li>
    <li class="baz">1b</li>
  </ul>
</div>
<div id='id2' class="parent">
  <ul>
    <li class="foo">2a</li>
    <li class="bar">2b</li>
  </ul>
</div>

Code

let foo = element.all(by.css('.parent')).all(by.css('.foo'));
expect(foo.getText()).toEqual(['1a', '2a']);
let baz = element.all(by.css('.parent')).all(by.css('.baz'));
expect(baz.getText()).toEqual(['1b']);
let nonexistent = element.all(by.css('.parent'))
  .all(by.css('.NONEXISTENT'));
expect(nonexistent.getText()).toEqual(['']);

// Or using the shortcut $$() notation instead of element.all(by.css()):

let foo = $$('.parent').$$('.foo');
expect(foo.getText()).toEqual(['1a', '2a']);
let baz = $$('.parent').$$('.baz');
expect(baz.getText()).toEqual(['1b']);
let nonexistent = $$('.parent').$$('.NONEXISTENT');
expect(nonexistent.getText()).toEqual(['']);

element.all возвращает массив обещаний. Вы можете перебирать массив и цепочку, чтобы найти метку, которая следует за входным тегом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...