Я начинающий программист селен, пожалуйста, помогите мне с этим ...

У меня ниже HTML и я пытаюсь подсчитать дочерние узлы элемента <div class="result-controls">, который составляет 4 (1 div и 3 li элементов)

<div class="result-controls">
   <div class="attachment">
      <li class="add-attachment-button-column"><a><button>ADD ATTACHMENTS</button></a></li><input type="file" multiple="" style="display: none;">
   </div>
   <li class="sign-button-column"><a href="javascript:void(0)"><button>SIGN</button></a></li>
   <li class="draft-button-column"><a><button>DRAFT</button></a></li>
   <li class="delete-column"> <a href="javascript:void(0)"><svg class="glyphicon-trash" viewBox="0 0 100 100"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trash"></use></svg> </a></li>
</div>

В настоящее время я рассчитываю количество отдельно, как показано ниже (переменная row имеет значение выше HTML)

  li_actions_count = row.find_elements(:xpath => "./li").length
  div_actions_count = row.find_elements(:xpath => "./div").length

Может кто-нибудь помочь мне с простым способом сделать это в Ruby с помощью веб-драйвера Selen

0
RanPaul 6 Апр 2017 в 04:10

2 ответа

Лучший ответ

Есть несколько возможных способов, в зависимости от того, насколько конкретно вы хотите, чтобы XPath был, например. если вы просто хотите считать дочерние элементы любого имени, тогда вы можете использовать *:

row.find_elements(:xpath => "*").length

И если вы хотите специально подсчитать дочерние элементы определенных имен, т.е. li и div:

row.find_elements(:xpath => "*[self::li|self::div]").length
2
har07 6 Апр 2017 в 02:32

Вы можете получить прямых потомков строки, используя xpath = "./*"

1
Moe Ghafari 6 Апр 2017 в 02:09