问题描述
我有一个基于测试套件执行情况生成的html文件。它包含测试运行详细信息,例如在特定运行中通过和失败了多少个测试用例。我对Shell脚本非常陌生,不确定如何从詹金斯$ Workspace中生成的.html中提取值。
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以下尝试,但返回空:
$ 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
。