如何使用 shell 脚本获取 html 文件中的特定值

How to fetch the specific values in the html file using shell script

我有一个 html 文件,它将根据测试套件的执行生成。它包含测试 运行 详细信息,例如在特定 运行 中通过和失败的测试用例数量。我是 shell 脚本的新手,不确定如何从 .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

如何从在上述特定 XPATH 中生成值的 html 文件中获取这些数字。

请帮我实现这个。

更新:

试过低于 1 但它 return 是空的:

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

问题的出现似乎是因为您的 html 代码段中 <i> 节点中的异常字符(不确定这是什么)。

绕过字符的一种有点复杂的方法是:

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

输出确实是 90