#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
.