Как получить определенные значения в HTML-файле с помощью сценария оболочки

#shell #jenkins #xmllint

#оболочка #дженкинс #xmllint

Вопрос:

У меня есть HTML-файл, который будет сгенерирован на основе выполнения набора тестов. Он содержит сведения о тестовом запуске, например, сколько тестовых случаев пройдено и выполнено с ошибкой в конкретном запуске. Я очень новичок в сценарии оболочки и не уверен, как извлечь значение из файла .html, который был сгенерирован в jenkins $Workspace .

Фрагмент HTML: (Скопирован только определенный тег вместо копирования всего HTML-файла):

 <ul class="quick-summary--list---2_80W">
    <li class="quick-summary--item---bfSQ0 quick-summary--passes---3IjYH" title="Passed">
       <button type="button">
           <i class="material-icons quick-summary--icon---TW1oG quick-summary--circle-icon---1HDS7"></i>
             9
      </button>
    </li>
   <li class="quick-summary--item---bfSQ0 quick-summary--failures---14s29" title="Failed">
       <button type="button">
          <i class="material-icons quick-summary--icon---TW1oG quick-summary--circle-icon---1HDS7"></i>
              0
       </button>    
    </li>
</ul>
  

В приведенном выше примере файла .html я ищу число в приведенном ниже xpath:

 .//*[@title='Passed']/button  // It should return 9 

.//*[@title='Failed']/button  // It should return 0
  

Как я могу получить это число из HTML-файла, который генерирует значения в указанном выше конкретном XPATH.

Пожалуйста, помогите мне добиться этого.

Обновлено:

Попробовал ниже, но он возвращает пустой:

 $ xmllint --html  --xpath "//*[@title='Passed']/button" result.html
XPath set is empty
  

Комментарии:

1. должен быть способ экспортировать результаты теста в более простой для анализа формат. HTML обычно предназначен для чтения результата людьми, а не для его анализа машинами. Проверьте документацию вашей платформы тестирования для получения дополнительной информации.

Ответ №1:

Проблема, похоже, возникает из-за необычных символов в <i> узлах вашего фрагмента html (не уверен, что это такое).

Один из несколько запутанных способов обойти символы заключается в следующем:

 xmllint --html  --xpath "substring-after(normalize-space(//li[@title='Passed']/button),' ')"   result.html
  

и

 xmllint --html  --xpath "substring-after(normalize-space(//li[@title='Failed']/button),' ')"   result.html
  

Выходы действительно 9 и 0 .