Транспортир: поиск элемента, который содержит несколько элементов div и не содержит уникальных css для их идентификации - PullRequest
0 голосов
/ 21 февраля 2019

Просто хотел поделиться: если вы находитесь в ситуации, когда в определенном разделе нет классов и значение этого конкретного div нельзя жестко закодировать и изменить, используя каркас protractor e2e, мне удалось найти конкретный div, используя этотМетод:

Добавление примера HTML, который не имеет класса для каждого элемента

<div class="row">
  <div class="page_banner">A Dude's Profile</div>
  <div class="profile_details">
    <div class="profile_name">
     <h3>Tony Adams</h3>
    </div>
    <div>ta@bogus.com</div>
    <div>0883424324</div>
  </div>
</div>

В случае, когда вам нужно сказать, определить, что существует уникальный номер мобильного телефона, поэтомузначение не согласовано.

function mobileNumberAssert() {
        element.all(by.css('.profile_details'))
        .get(1) // number of divs in css
        .getText()
        .then(function(textFoundInCss) {
    if(textFoundInCss > 10) {
      return true; 
       console.log('there is a mobile number present with 10 digits');
       } else {
         return false;
       }
     });
}

Для отладки вы можете записать в консоль журнал "textFoundInCss", который поможет вам найти конкретный div.

1 Ответ

0 голосов
/ 22 февраля 2019

Поскольку кажется, что вы ищете элемент, основанный на тексте, вы можете использовать by.cssContainingText(), чтобы сделать это намного проще.

const el = element(by.cssContainingText('div', `Text I'm looking for`);

el.isPresent().then(isPresent => {
    if (isPresent) {
        // do something ...
    } else {
        return false;
    }
}
...