如何使用 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
输出确实是 9
和 0
。
我有一个 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
输出确实是 9
和 0
。