<!DOCTYPE html>
<html>
  <head>
    <title>测试报告</title>
    <meta charset="UTF-8">
    <style>body {    
    font-family: consolas, Verdana, sans-serif;
    font-size: .95em;
    color: #696e71;
    display: grid;
    grid-template-columns: 1fr 5rem;
}

.main_section {   
    width: 90%;
    margin: 0 auto;
}

#float_menu{    
    position:fixed;
    top:0;
    right:0;
    text-align: center;
}

#float_menu .menu-item {       
    cursor: pointer;
    padding: .5em;
    margin: .5em 0;
    color: #c08580;
    background-color: #f8f0ef;
    font-size: 1.2em;
}



.result{  
    display: flex;
}
  
  
.result_table{
    border-collapse: collapse;
    border: 1px solid #f0e0e5;
    width: 30em;
    text-align: center;
    font-size: 1.0em;
}
      
.result_table td{
    border: 1px solid #f0e0e5;
    padding: .3em;
}
  
.result_barchart{  
    width: 30em;
    margin: 0 5em 0 5em;
}
  
.barchar_item{
    margin: 2.5rem 0;
}
  
.barchart_barbox {
    margin: 0.5em 0;
    width: 100%;
    background-color: #fff;
    border: 1px solid #86c2dd;
    border-radius: .2em;
}
  
.barchart_bar {
    text-align: right;
    height: 1.2rem;
}
  
  



.h3_button {
    margin: 1.5em;
    cursor: pointer;
    color: #03a9f4;
}


.info
{
    white-space:pre-wrap;
    margin: .8em 1.5em;
}


.error-info
{
    color: #a64747
}

.suite_dir {
    margin: 1em .2em;
    padding: .3em;
    /* background-color: #dfeff6; */
    border: 1px solid #bcd8e4;
}
.suite_file {
    margin: 1em .2em;
    padding: .3em;
    border: 1px solid #bcd8e4;
}


.case {
    margin: 1em .2em;
    /* padding: .3em; */
    border: 1px solid #e7d4d4;
}

.case_class_path{
    margin: 0em 1em; 
}


.folder_header { 
    padding: .2em .7em;
    background-color: #fffaf9;
    cursor: pointer;
}


.setup{
    margin: .2em;
    /* padding: .3em; */
    /* border: 1px solid #e7d4d4; */
}
.teardown{
    margin: .2em;
    /* padding: .3em;*/
    /* border: 1px solid #e7d4d4; */
}
.test_steps{
    margin: .2em;
    padding: .3em;
    /* border: 1px solid #e7d4d4; */
}


.label {
    display: inline-block;
    padding: .1em .5em;
    font-size: .88em;
    letter-spacing: 1px;
    white-space: nowrap;
    color: #0d6ebc;
    border-radius: .2em;
    min-width: 5em;    
    margin-right: 2em;
    font-family: consolas;
}

/* .suite_setup .label{
    color: #219e26 ;
}
.suite_teardown .label{
    color: #219e26;
} */


/* .case.pass   .casename{
    color: #329132 ;
} */
.case.pass   .caselabel{
    color: white;
    background-color: #3b9e3f;
}
/* .case.fail   .casename{
    color: #a64747;
} */
.case.fail   .caselabel{
    color: white;
    background-color: #a64747;
}
/* .case.abort   .casename{
    color: #953ab7;
} */
.case.abort   .caselabel{
    color: white;
    background-color: #9c27b0;
}



.case_step  {
    margin: .8em;
}
.checkpoint_pass {
    margin: .8em;
}
.checkpoint_fail {
    margin: .8em;
}

.case_step  .tag{
    color: #2196f3;;
    margin: .3em 1em .3em 0;
    padding: .1em .3em;
    font-size: .92em;
}

.checkpoint_pass .tag{
    color: #009806;
    margin:.3em 1em .3em .5em;
    padding: .1em .3em;
    font-size: .92em;
}
.checkpoint_fail .tag{
    color: #9c2020;
    margin:.3em 1em .3em .5em;
    padding: .1em .3em;
    font-size: .92em;
}

.screenshot {
    border: 1px solid #86c2dd;
}

.executetime {
    float: right;
}</style>
    <script type="text/javascript">var FOLDER_ALL_CASES = false //是否为精简模式的标记
var ERROR_INFOS = [];  // 错误信息列表
var current_error_idx = -1;

// 页面加载后执行的函数
window.addEventListener("load", function(){
    // 所有 .folder_header 添加点击事件处理
    let folderHeaderEles = document.querySelectorAll(".folder_header");
    folderHeaderEles.forEach(function(ele) {
        ele.addEventListener("click", function(event) {
        let fb = event.target.closest('.folder_header').nextElementSibling;
        fb.style.display = fb.style.display === 'none' ? 'block' : 'none'
        });
    });

    // 找到所有的错误信息对象
    ERROR_INFOS = document.querySelectorAll(".error-info");
});



function toggle_folder_all_cases(){
    let eles = document.querySelectorAll(".folder_body");
    
    FOLDER_ALL_CASES = !FOLDER_ALL_CASES;
    document.getElementById('display_mode').innerHTML = FOLDER_ALL_CASES? "Detail" : "Summary"

    for (const ele of eles){
        ele.style.display =  FOLDER_ALL_CASES? "none": "block"
    }
    
}



function previous_error(){
    // 查找错误必须是详细模式
    if (FOLDER_ALL_CASES)
        toggle_folder_all_cases()

    current_error_idx -= 1; 
    if (current_error_idx<0)
        current_error_idx = 0

    
    let error = ERROR_INFOS[current_error_idx];

    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});

    
}


function next_error(){
    
    // 查找错误必须是详细模式
    if (FOLDER_ALL_CASES)
        toggle_folder_all_cases()

    current_error_idx += 1;
    if (current_error_idx > ERROR_INFOS.length-1)
        current_error_idx = ERROR_INFOS.length-1

    let error = ERROR_INFOS[current_error_idx];

    error.scrollIntoView({behavior: "smooth", block: "center", inline: "start"});
    
}</script>
  </head>
  <body>
    <div class="main_section">
      <h1 style="font-family: auto">测试报告</h1>
      <h3>统计结果</h3>
      <div class="result">
        <table class="result_table">
          <tbody>
            <tr>
              <td>hytest 版本</td>
              <td>0.8.12</td>
            </tr>
            <tr>
              <td>开始时间</td>
              <td>2024/12/12 15:53:23</td>
            </tr>
            <tr>
              <td>结束时间</td>
              <td>2024/12/12 15:54:09</td>
            </tr>
            <tr>
              <td>耗时</td>
              <td>46.349 秒</td>
            </tr>
            <tr>
              <td>预备执行用例数量</td>
              <td>3</td>
            </tr>
            <tr>
              <td>实际执用例行数量</td>
              <td>3</td>
            </tr>
            <tr>
              <td>通过</td>
              <td>1</td>
            </tr>
            <tr>
              <td>失败</td>
              <td style="">0</td>
            </tr>
            <tr>
              <td>异常</td>
              <td style="color:red">2</td>
            </tr>
            <tr>
              <td>阻塞</td>
              <td style="">0</td>
            </tr>
            <tr>
              <td>套件初始化失败</td>
              <td style="">0</td>
            </tr>
            <tr>
              <td>套件清除  失败</td>
              <td style="">0</td>
            </tr>
            <tr>
              <td>用例初始化失败</td>
              <td style="">0</td>
            </tr>
            <tr>
              <td>用例清除  失败</td>
              <td style="">0</td>
            </tr>
          </tbody>
        </table>
        <div class="result_barchart">
          <div class="barchar_item">
            <span>用例通过 33.3% : 1 个</span>
            <div class="barchart_barbox">
              <div class="barchart_bar" style="width: 33.3%; background-color: #04AA6D;"></div>
            </div>
          </div>
          <div class="barchar_item">
            <span>用例失败 0% : 0 个</span>
            <div class="barchart_barbox">
              <div class="barchart_bar" style="width: 0.0%; background-color: #bb4069;"></div>
            </div>
          </div>
          <div class="barchar_item">
            <span>用例异常 66.7% : 2 个</span>
            <div class="barchart_barbox">
              <div class="barchart_bar" style="width: 66.7%; background-color: #9c27b0;"></div>
            </div>
          </div>
          <div class="barchar_item">
            <span>用例阻塞 0% : 0 个</span>
            <div class="barchart_barbox">
              <div class="barchart_bar" style="width: 0.0%; background-color: #dcbdbd;"></div>
            </div>
          </div>
        </div>
      </div>
      <div style="margin-top:2em">
        <h3 style="display:inline">执行日志</h3>
      </div>
      <div class="exec_log">
        <div class="suite_dir" id="suite_dir cases\">
          <div>
            <span class="label">进入目录</span>
            <span>cases\</span>
          </div>
          <div class="suite_setup setup" id="suite_setup setup cases\">
            <div class="folder_header">
              <span class="label">套件初始化</span>
              <span>cases\</span>
              <span class="executetime">2024-12-12 15:53:23</span>
            </div>
            <div class="folder_body">
              <div class="info">打开浏览器</div>
            </div>
          </div>
        </div>
        <div class="suite_dir" id="suite_dir cases\03区域分组\">
          <div>
            <span class="label">进入目录</span>
            <span>cases\03区域分组\</span>
          </div>
          <div class="suite_setup setup" id="suite_setup setup cases\03区域分组\">
            <div class="folder_header">
              <span class="label">套件初始化</span>
              <span>cases\03区域分组\</span>
              <span class="executetime">2024-12-12 15:53:29</span>
            </div>
            <div class="folder_body">
              <div class="info">打开浏览器</div>
              <div class="info">输入登录账号</div>
              <div class="info">输入登录密码</div>
              <div class="info">输入验证码</div>
              <div class="info">点击登录按钮</div>
            </div>
          </div>
        </div>
        <div class="suite_file" id="suite_file cases\03区域分组\01新增区域分组.py">
          <div>
            <span class="label">进入文件</span>
            <span>cases\03区域分组\01新增区域分组.py</span>
          </div>
          <div class="case pass" id="case_00000001">
            <div class="folder_header">
              <span class="label caselabel">用例 PASS</span>
              <span class="casename">Areagroup_add_001</span>
              <span class="executetime">2024-12-12 15:53:41</span>
            </div>
            <div class="folder_body">
              <span class="case_class_path">cases\03区域分组\01新增区域分组.py::AreagroupAdd001</span>
              <div class="test_steps" id="test_steps Areagroup_add_001">
                <span class="label">测试步骤</span>
                <div class="case_step">
                  <span class="tag">步骤 #1</span>
                  <span>点击新增按钮</span>
                </div>
                <div class="case_step">
                  <span class="tag">步骤 #2</span>
                  <span>填写分组名称</span>
                </div>
                <div class="case_step">
                  <span class="tag">步骤 #3</span>
                  <span>填写分组地址</span>
                </div>
                <div class="case_step">
                  <span class="tag">步骤 #4</span>
                  <span>填写分组备注</span>
                </div>
                <div class="case_step">
                  <span class="tag">步骤 #6</span>
                  <span>点击确认</span>
                </div>
                <div class="case_step">
                  <span class="tag">步骤 #7</span>
                  <span>验证是否新增成功</span>
                </div>
                <div class="checkpoint_pass">
                  <span class="tag">检查点 PASS</span>
                  <span>检查是否出现成功提示弹窗</span>
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="suite_file" id="suite_file cases\03区域分组\02编辑区域分组.py">
          <div>
            <span class="label">进入文件</span>
            <span>cases\03区域分组\02编辑区域分组.py</span>
          </div>
          <div class="case abort" id="case_00000002">
            <div class="folder_header">
              <span class="label caselabel">用例 ABORT</span>
              <span class="casename">Areagroup_modify_001</span>
              <span class="executetime">2024-12-12 15:53:46</span>
            </div>
            <div class="folder_body">
              <span class="case_class_path">cases\03区域分组\02编辑区域分组.py::AreagroupMod001</span>
              <div class="test_steps" id="test_steps Areagroup_modify_001">
                <span class="label">测试步骤</span>
                <div class="case_step">
                  <span class="tag">步骤 #1</span>
                  <span>勾选分组,点击“编辑”按钮</span>
                </div>
                <div class="info error-info">Message: 
Stacktrace:
	GetHandleVerifier [0x00007FF60157CEC5+12997]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF6017FBCA4+1897908]
	(No symbol) [0x00007FF60132F1CC]
	(No symbol) [0x00007FF60137672E]
	(No symbol) [0x00007FF6013767B5]
	(No symbol) [0x00007FF6013B4ED7]
	(No symbol) [0x00007FF601397F8F]
	(No symbol) [0x00007FF60136C09D]
	(No symbol) [0x00007FF6013B2887]
	(No symbol) [0x00007FF601397BB3]
	(No symbol) [0x00007FF60136B5AC]
	(No symbol) [0x00007FF60136AA8D]
	(No symbol) [0x00007FF60136B171]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601729DD4+1038052]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF6014A08BF+56655]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF601493063+1267]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601728B5D+1033325]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601519731+327857]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515BB4+312628]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515CE9+312937]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF60150C25C+273372]
	BaseThreadInitThunk [0x00007FFB6624259D+29]
	RtlUserThreadStart [0x00007FFB6798AF38+40]
 
Traceback:
  File &quot;C:\Users\EDY\Desktop\运维标准版\cases\03区域分组\02编辑区域分组.py&quot;, line 11, in teststeps
    checkbox  = WebDriverWait(wd, 10).until(
  File &quot;D:\python\lib\site-packages\selenium\webdriver\support\wait.py&quot;, line 87, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 
Stacktrace:
	GetHandleVerifier [0x00007FF60157CEC5+12997]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF6017FBCA4+1897908]
	(No symbol) [0x00007FF60132F1CC]
	(No symbol) [0x00007FF60137672E]
	(No symbol) [0x00007FF6013767B5]
	(No symbol) [0x00007FF6013B4ED7]
	(No symbol) [0x00007FF601397F8F]
	(No symbol) [0x00007FF60136C09D]
	(No symbol) [0x00007FF6013B2887]
	(No symbol) [0x00007FF601397BB3]
	(No symbol) [0x00007FF60136B5AC]
	(No symbol) [0x00007FF60136AA8D]
	(No symbol) [0x00007FF60136B171]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601729DD4+1038052]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF6014A08BF+56655]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF601493063+1267]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601728B5D+1033325]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601519731+327857]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515BB4+312628]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515CE9+312937]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF60150C25C+273372]
	BaseThreadInitThunk [0x00007FFB6624259D+29]
	RtlUserThreadStart [0x00007FFB6798AF38+40]

</div>
              </div>
            </div>
          </div>
        </div>
        <div class="suite_file" id="suite_file cases\03区域分组\03删除区域分组.py">
          <div>
            <span class="label">进入文件</span>
            <span>cases\03区域分组\03删除区域分组.py</span>
          </div>
          <div class="case abort" id="case_00000003">
            <div class="folder_header">
              <span class="label caselabel">用例 ABORT</span>
              <span class="casename">Areagroup_delete_001</span>
              <span class="executetime">2024-12-12 15:53:59</span>
            </div>
            <div class="folder_body">
              <span class="case_class_path">cases\03区域分组\03删除区域分组.py::AreagroupDel001</span>
              <div class="test_steps" id="test_steps Areagroup_delete_001">
                <span class="label">测试步骤</span>
                <div class="case_step">
                  <span class="tag">步骤 #1</span>
                  <span>勾选分组</span>
                </div>
                <div class="info error-info">Message: 
Stacktrace:
	GetHandleVerifier [0x00007FF60157CEC5+12997]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF6017FBCA4+1897908]
	(No symbol) [0x00007FF60132F1CC]
	(No symbol) [0x00007FF60137672E]
	(No symbol) [0x00007FF6013767B5]
	(No symbol) [0x00007FF6013B4ED7]
	(No symbol) [0x00007FF601397F8F]
	(No symbol) [0x00007FF60136C09D]
	(No symbol) [0x00007FF6013B2887]
	(No symbol) [0x00007FF601397BB3]
	(No symbol) [0x00007FF60136B5AC]
	(No symbol) [0x00007FF60136AA8D]
	(No symbol) [0x00007FF60136B171]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601729DD4+1038052]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF6014A08BF+56655]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF601493063+1267]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601728B5D+1033325]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601519731+327857]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515BB4+312628]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515CE9+312937]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF60150C25C+273372]
	BaseThreadInitThunk [0x00007FFB6624259D+29]
	RtlUserThreadStart [0x00007FFB6798AF38+40]
 
Traceback:
  File &quot;C:\Users\EDY\Desktop\运维标准版\cases\03区域分组\03删除区域分组.py&quot;, line 9, in teststeps
    checkbox  = WebDriverWait(wd, 10).until(
  File &quot;D:\python\lib\site-packages\selenium\webdriver\support\wait.py&quot;, line 87, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 
Stacktrace:
	GetHandleVerifier [0x00007FF60157CEC5+12997]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF6017FBCA4+1897908]
	(No symbol) [0x00007FF60132F1CC]
	(No symbol) [0x00007FF60137672E]
	(No symbol) [0x00007FF6013767B5]
	(No symbol) [0x00007FF6013B4ED7]
	(No symbol) [0x00007FF601397F8F]
	(No symbol) [0x00007FF60136C09D]
	(No symbol) [0x00007FF6013B2887]
	(No symbol) [0x00007FF601397BB3]
	(No symbol) [0x00007FF60136B5AC]
	(No symbol) [0x00007FF60136AA8D]
	(No symbol) [0x00007FF60136B171]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601729DD4+1038052]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF6014A08BF+56655]
	Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF601493063+1267]
	Microsoft::Applications::Events::EventProperty::empty [0x00007FF601728B5D+1033325]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601519731+327857]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515BB4+312628]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF601515CE9+312937]
	Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF60150C25C+273372]
	BaseThreadInitThunk [0x00007FFB6624259D+29]
	RtlUserThreadStart [0x00007FFB6798AF38+40]

</div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div id="float_menu">
      <div class="menu-item" onclick="document.querySelector(&quot;body&quot;).scrollIntoView()">页首</div>
      <div class="menu-item" onclick="window.open(&quot;http://www.byhy.net/tut/auto/hytest/01&quot;, &quot;_blank&quot;); ">帮助</div>
      <div class="menu-item" id="display_mode" onclick="toggle_folder_all_cases()">Summary</div>
      <div class="error_jumper" display="block">
        <div class="menu-item" onclick="previous_error()" title="上一个错误">∧</div>
        <div class="menu-item" onclick="next_error()" title="下一个错误">∨</div>
      </div>
    </div>
  </body>
</html>