提交 127fcc01 authored 作者: 陈泽健's avatar 陈泽健

ci: 更新 .gitignore 并移除测试报告,展厅会议室中控屏增加截图操作。

- 从 .gitignore 中移除了预定系统/reports/ 目录的排除规则
- 删除了预定系统/reports/ 目录下的测试报告文件
上级 3c440f1a
/预定系统/reports/
/预定系统/log/ /预定系统/log/
/日志监测/error_log/ /日志监测/error_log/
/预定配套件/中控门口屏/reports/ /预定配套件/中控门口屏/reports/
......
...@@ -52,6 +52,7 @@ class ExhibitionMeetingControl: ...@@ -52,6 +52,7 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10005"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10005"]/android.widget.Button')
enter_system_button.click() enter_system_button.click()
sleep(10) sleep(10)
INFO("进入系统") INFO("进入系统")
# 点击【确认】按钮 # 点击【确认】按钮
INFO("点击【确认】按钮") INFO("点击【确认】按钮")
...@@ -59,6 +60,9 @@ class ExhibitionMeetingControl: ...@@ -59,6 +60,9 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10033"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10033"]/android.widget.Button')
confirm_button.click() confirm_button.click()
sleep(10) sleep(10)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"【进入系统】界面")
# 进入视频会议模式,使用摄像头跟踪功能 # 进入视频会议模式,使用摄像头跟踪功能
INFO("进入视频会议模式") INFO("进入视频会议模式")
...@@ -66,6 +70,8 @@ class ExhibitionMeetingControl: ...@@ -66,6 +70,8 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10017"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10017"]/android.widget.Button')
video_meeting_button.click() video_meeting_button.click()
sleep(10) sleep(10)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect","ExhibitionConferenceControlScreen", "进入【视频模式】界面")
# 点击【入住式会议】按钮 # 点击【入住式会议】按钮
INFO("点击【入住式会议】按钮") INFO("点击【入住式会议】按钮")
...@@ -73,6 +79,9 @@ class ExhibitionMeetingControl: ...@@ -73,6 +79,9 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10042"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10042"]/android.widget.Button')
enter_meeting_button.click() enter_meeting_button.click()
sleep(10) sleep(10)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"进入【入住时会议】界面")
# 点击【摄像头跟踪】按钮 # 点击【摄像头跟踪】按钮
INFO("点击【摄像头跟踪】按钮") INFO("点击【摄像头跟踪】按钮")
...@@ -80,6 +89,9 @@ class ExhibitionMeetingControl: ...@@ -80,6 +89,9 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10529"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10529"]/android.widget.Button')
camera_tracking_button.click() camera_tracking_button.click()
sleep(10) sleep(10)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"进入【摄像头跟踪】界面")
#选择左屏进行摄像头跟踪 #选择左屏进行摄像头跟踪
INFO("选择左屏进行摄像头跟踪") INFO("选择左屏进行摄像头跟踪")
...@@ -87,6 +99,9 @@ class ExhibitionMeetingControl: ...@@ -87,6 +99,9 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10100"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10100"]/android.widget.Button')
left_screen_button.click() left_screen_button.click()
sleep(5) sleep(5)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"左屏摄像头进行跟踪")
# 返回上一级界面 # 返回上一级界面
INFO("返回上一级界面") INFO("返回上一级界面")
...@@ -101,6 +116,9 @@ class ExhibitionMeetingControl: ...@@ -101,6 +116,9 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10538"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10538"]/android.widget.Button')
no_paper_button.click() no_paper_button.click()
sleep(5) sleep(5)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"无纸化界面")
# 点击【全部上升】按钮 # 点击【全部上升】按钮
INFO("点击【全部上升】按钮") INFO("点击【全部上升】按钮")
...@@ -108,6 +126,9 @@ class ExhibitionMeetingControl: ...@@ -108,6 +126,9 @@ class ExhibitionMeetingControl:
'//android.widget.FrameLayout[@content-desc="10150"]/android.widget.Button') '//android.widget.FrameLayout[@content-desc="10150"]/android.widget.Button')
all_up_button.click() all_up_button.click()
sleep(5) sleep(5)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"点击【全部上升】按钮")
# #
# 点击【返回】按钮 # 点击【返回】按钮
INFO("点击【返回】按钮") INFO("点击【返回】按钮")
...@@ -123,6 +144,9 @@ class ExhibitionMeetingControl: ...@@ -123,6 +144,9 @@ class ExhibitionMeetingControl:
INFO("点击左上角logo进入后台") INFO("点击左上角logo进入后台")
enter_back_button.click() enter_back_button.click()
sleep(3) sleep(3)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"后台界面")
INFO("尝试定位麦克风按钮") INFO("尝试定位麦克风按钮")
mic_on_button = app_drive.find_element(AppiumBy.XPATH, mic_on_button = app_drive.find_element(AppiumBy.XPATH,
...@@ -130,6 +154,10 @@ class ExhibitionMeetingControl: ...@@ -130,6 +154,10 @@ class ExhibitionMeetingControl:
INFO("开启麦克风") INFO("开启麦克风")
mic_on_button.click() mic_on_button.click()
sleep(2) sleep(2)
# 在当前界面截图
get_screenshot_with_retry(wd, app_drive, "Exhibit_Inspect", "ExhibitionConferenceControlScreen",
"开启桌面麦克风")
# 云喇叭参数 # 云喇叭参数
app_id = os.getenv("APP_ID", "a98a124c6c3252f6612fc544a0d0fa79") app_id = os.getenv("APP_ID", "a98a124c6c3252f6612fc544a0d0fa79")
app_secret = os.getenv("APP_SECRET", "88bc1ec4eba624f47b2200a4ce8c3852") app_secret = os.getenv("APP_SECRET", "88bc1ec4eba624f47b2200a4ce8c3852")
...@@ -142,13 +170,6 @@ class ExhibitionMeetingControl: ...@@ -142,13 +170,6 @@ class ExhibitionMeetingControl:
# INFO("关闭麦克风") # INFO("关闭麦克风")
# mic_off_button.click() # mic_off_button.click()
# 关闭左摄像头
left_camera_off_button = app_drive.find_element(AppiumBy.XPATH,
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[5]")
INFO("关闭左摄像头")
left_camera_off_button.click()
sleep(20)
# 进入“已预定列表”界面,结束这场会议 # 进入“已预定列表”界面,结束这场会议
safe_click((By.XPATH, "//span[contains(text(),'已预订会议')]"), wd) safe_click((By.XPATH, "//span[contains(text(),'已预订会议')]"), wd)
# 搜索会议 # 搜索会议
......
<!DOCTYPE html>
<html>
<head>
<title>兰州中石化项目议题申报测试报告</title>
<meta charset="UTF-8">
<style>body {
font-family: consolas, Verdana, sans-serif;
font-size: 1.2em;
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;
}
/* 模态框内容 */
.modal-content {
margin: auto;
display: block;
width: 95%;
max-width: 700px;
max-height: 80vh; /* 设置最大高度为视口高度的80% */
object-fit: contain; /* 保持图片的宽高比 */
zoom: 3;
}
/* 模态框 */
.modal {
display: none; /* 隐藏 */
position: fixed; /* 固定位置 */
z-index: 1; /* 坐在顶部 */
padding-top: 40px; /* 在图片上方添加一些内边距 */
left: 0;
top: 0;
width: 100%; /* 宽度 */
height: 100%; /* 高度 */
overflow: auto; /* 启用滚动 */
background-color: rgb(0,0,0); /* 背景颜色 */
background-color: rgba(0,0,0,0.9); /* 黑色背景半透明 */
}
/* 关闭按钮 */
.close {
position: absolute; /* 定义元素的定位方式为绝对定位 */
top: 10px; /* 距离最近的已定位祖先元素顶部15像素 */
right: 30px; /* 距离最近的已定位祖先元素右侧35像素 */
color: #f1f1f1; /* 文本颜色为浅灰色 */
font-size: 15px; /* 字体大小为40像素 */
font-weight: bold; /* 字体加粗 */
transition: 0.3s; /* 过渡效果,0.3秒内完成 */
}
.close:hover,
.close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
</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");
// 获取所有图片元素
let images = document.querySelectorAll('.modal-image');
// 获取模态框元素
let modal = document.getElementById("imageModal");
// 获取模态框中的图片元素
let modalImg = document.getElementById("img01");
// 获取关闭按钮元素
let span = document.getElementsByClassName("close")[0];
// 为每个图片添加点击事件监听器
images.forEach(function(img) {
img.addEventListener("click", function() {
modal.style.display = "block"; // 显示模态框
modalImg.src = this.src; // 设置模态框中的图片为点击的图片
});
});
// 当点击关闭按钮时,隐藏模态框
span.onclick = function() {
modal.style.display = "none";
};
// 当点击模态框外区域时,隐藏模态框
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
};
});
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="modal" id="imageModal">
<div>
<img class="modal-content" id="img01">
<span class="close">关闭</span>
</div>
</div>
<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>2025/06/10 15:20:56</td>
</tr>
<tr>
<td>结束时间</td>
<td>2025/06/10 15:20:56</td>
</tr>
<tr>
<td>耗时</td>
<td>0.054 秒</td>
</tr>
<tr>
<td>预备执行用例数量</td>
<td>3</td>
</tr>
<tr>
<td>实际执用例行数量</td>
<td>0</td>
</tr>
<tr>
<td>通过</td>
<td>0</td>
</tr>
<tr>
<td>失败</td>
<td style="">0</td>
</tr>
<tr>
<td>异常</td>
<td style="">0</td>
</tr>
<tr>
<td>阻塞</td>
<td style="color:red">3</td>
</tr>
<tr>
<td>套件初始化失败</td>
<td style="color:red">1</td>
</tr>
<tr>
<td>套件清除 失败</td>
<td style="color:red">1</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>用例通过 0% : 0 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 0.0%; 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>用例异常 0% : 0 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 0.0%; background-color: #9c27b0;"></div>
</div>
</div>
<div class="barchar_item">
<span>用例阻塞 100% : 3 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 100.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>
<div class="suite_dir" id="suite_dir cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div>
<span class="label">进入目录</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
</div>
<div class="suite_setup setup fail" id="suite_setup setup cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div class="folder_header">
<span class="label">套件初始化</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
<span class="executetime">2025-06-10 15:20:56</span>
</div>
<div class="folder_body">
<div class="case_step">
<span class="tag">步骤 #1</span>
<span>初始化浏览器</span>
</div>
<div class="info">'----------' 正在初始化浏览器 '----------'</div>
<div class="info">输入用户名:admin</div>
<div class="info error-info">suite setup fail | 'NoneType' object has no attribute 'find_element'
Traceback:
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\cases\项目定制\兰州中石化项目25-05-24\议题申报\__st__.py&quot;, line 17, in suite_setup
user_login(&quot;admin&quot;, &quot;Ubains@4321&quot;)
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\Base\base.py&quot;, line 172, in user_login
safe_send_keys((By.XPATH, &quot;//input[@placeholder='请输入账号或手机号或邮箱号']&quot;), f'{username}', wd)
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\Base\base.py&quot;, line 223, in safe_send_keys
element = WebDriverWait(wd, 20).until(EC.visibility_of_element_located(element_locator))
File &quot;E:\Python\lib\site-packages\selenium\webdriver\support\wait.py&quot;, line 137, in until
value = method(self._driver)
File &quot;E:\Python\lib\site-packages\selenium\webdriver\support\expected_conditions.py&quot;, line 224, in _predicate
return _element_if_visible(driver.find_element(*locator))
AttributeError: 'NoneType' object has no attribute 'find_element'
</div>
</div>
</div>
<div class="suite_teardown teardown fail" id="suite_teardown teardown cases\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\</span>
<span class="executetime">2025-06-10 15:20:56</span>
</div>
<div class="folder_body">
<div class="info">清除浏览器</div>
<div class="info error-info">suite teardown fail | 'NoneType' object has no attribute 'quit'
Traceback:
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\cases\__st__.py&quot;, line 24, in suite_teardown
browser_quit()
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\Base\base.py&quot;, line 752, in browser_quit
wd.quit()
AttributeError: 'NoneType' object has no attribute 'quit'
</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>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<title>兰州中石化项目议题申报测试报告</title>
<meta charset="UTF-8">
<style>body {
font-family: consolas, Verdana, sans-serif;
font-size: 1.2em;
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;
}
/* 模态框内容 */
.modal-content {
margin: auto;
display: block;
width: 95%;
max-width: 700px;
max-height: 80vh; /* 设置最大高度为视口高度的80% */
object-fit: contain; /* 保持图片的宽高比 */
zoom: 3;
}
/* 模态框 */
.modal {
display: none; /* 隐藏 */
position: fixed; /* 固定位置 */
z-index: 1; /* 坐在顶部 */
padding-top: 40px; /* 在图片上方添加一些内边距 */
left: 0;
top: 0;
width: 100%; /* 宽度 */
height: 100%; /* 高度 */
overflow: auto; /* 启用滚动 */
background-color: rgb(0,0,0); /* 背景颜色 */
background-color: rgba(0,0,0,0.9); /* 黑色背景半透明 */
}
/* 关闭按钮 */
.close {
position: absolute; /* 定义元素的定位方式为绝对定位 */
top: 10px; /* 距离最近的已定位祖先元素顶部15像素 */
right: 30px; /* 距离最近的已定位祖先元素右侧35像素 */
color: #f1f1f1; /* 文本颜色为浅灰色 */
font-size: 15px; /* 字体大小为40像素 */
font-weight: bold; /* 字体加粗 */
transition: 0.3s; /* 过渡效果,0.3秒内完成 */
}
.close:hover,
.close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
</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");
// 获取所有图片元素
let images = document.querySelectorAll('.modal-image');
// 获取模态框元素
let modal = document.getElementById("imageModal");
// 获取模态框中的图片元素
let modalImg = document.getElementById("img01");
// 获取关闭按钮元素
let span = document.getElementsByClassName("close")[0];
// 为每个图片添加点击事件监听器
images.forEach(function(img) {
img.addEventListener("click", function() {
modal.style.display = "block"; // 显示模态框
modalImg.src = this.src; // 设置模态框中的图片为点击的图片
});
});
// 当点击关闭按钮时,隐藏模态框
span.onclick = function() {
modal.style.display = "none";
};
// 当点击模态框外区域时,隐藏模态框
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
};
});
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="modal" id="imageModal">
<div>
<img class="modal-content" id="img01">
<span class="close">关闭</span>
</div>
</div>
<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>2025/06/10 15:32:23</td>
</tr>
<tr>
<td>结束时间</td>
<td>2025/06/10 15:33:25</td>
</tr>
<tr>
<td>耗时</td>
<td>62.419 秒</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>
<div class="suite_dir" id="suite_dir cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div>
<span class="label">进入目录</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
</div>
<div class="suite_setup setup" id="suite_setup setup cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div class="folder_header">
<span class="label">套件初始化</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
<span class="executetime">2025-06-10 15:32:23</span>
</div>
<div class="folder_body">
<div class="case_step">
<span class="tag">步骤 #1</span>
<span>初始化浏览器</span>
</div>
<div class="info">'----------' 正在初始化浏览器 '----------'</div>
<div class="info">'----------' 浏览器初始化完成 '----------'</div>
<div class="info">输入用户名:admin</div>
<div class="info">输入密码:Ubains@4321</div>
<div class="info">输入验证码:csba</div>
<div class="info">点击登录按钮</div>
</div>
</div>
</div>
<div class="suite_file" id="suite_file cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py">
<div>
<span class="label">进入文件</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py</span>
</div>
<div class="case pass" id="case_00000001">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">议题申报001</span>
<span class="executetime">2025-06-10 15:32:33</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py::TopicDeclaration</span>
<div class="test_steps" id="test_steps 议题申报001">
<span class="label">测试步骤</span>
<div class="info">点击【议题申报】按钮</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //body/div[@class='el-dialog__wrapper']/div[@aria-label='dialog']/div[@class='el-dialog__body']/div[@class='dialog_content']/div[1]/div[2]/div[1]/div[1]、元素类型: getText、元素值: 、预期结果: admin</div>
<div class="info">获取到的文本信息为:申报人:
admin</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:申报人:
admin</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610153234961855.png" width="50">
</div>
</div>
</div>
</div>
<div class="case abort" id="case_00000002">
<div class="folder_header">
<span class="label caselabel">用例 ABORT</span>
<span class="casename">议题申报003</span>
<span class="executetime">2025-06-10 15:32:41</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py::TopicDeclaration</span>
<div class="test_steps" id="test_steps 议题申报003">
<span class="label">测试步骤</span>
<div class="info">点击【议题申报】按钮</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //p[@class='el-message__content']、元素类型: getTips、元素值: 、预期结果: 请输入议题名称</div>
<div class="info">Exception occurred: Message:
Stacktrace:
GetHandleVerifier [0x0x7ff6548a91f5+2853845]
GetHandleVerifier [0x0x7ff654603ac0+79008]
(No symbol) [0x0x7ff6543c9bda]
(No symbol) [0x0x7ff6544200f6]
(No symbol) [0x0x7ff6544203ac]
(No symbol) [0x0x7ff654473b07]
(No symbol) [0x0x7ff6544484ff]
(No symbol) [0x0x7ff6544708f5]
(No symbol) [0x0x7ff654448293]
(No symbol) [0x0x7ff654411061]
(No symbol) [0x0x7ff654411df3]
GetHandleVerifier [0x0x7ff6548d410d+3029741]
GetHandleVerifier [0x0x7ff6548ce52d+3006221]
GetHandleVerifier [0x0x7ff6548ed5b2+3133330]
GetHandleVerifier [0x0x7ff65461d98e+185198]
GetHandleVerifier [0x0x7ff654624edf+215231]
GetHandleVerifier [0x0x7ff65460c324+113924]
GetHandleVerifier [0x0x7ff65460c4d9+114361]
GetHandleVerifier [0x0x7ff6545f3208+11240]
BaseThreadInitThunk [0x0x7ffb2264e8d7+23]
RtlUserThreadStart [0x0x7ffb2449c5dc+44]
</div>
<div class="info">获取到的提示信息为:None</div>
<div class="info error-info">argument of type 'NoneType' is not iterable
Traceback:
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py&quot;, line 65, in teststeps
CHECK_POINT(f&quot;获取到的提示信息为:{notify_text}&quot;, expented_result in notify_text)
TypeError: argument of type 'NoneType' is not iterable
</div>
</div>
</div>
</div>
<div class="case abort" id="case_00000003">
<div class="folder_header">
<span class="label caselabel">用例 ABORT</span>
<span class="casename">议题申报004</span>
<span class="executetime">2025-06-10 15:33:06</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py::TopicDeclaration</span>
<div class="test_steps" id="test_steps 议题申报004">
<span class="label">测试步骤</span>
<div class="info">点击【议题申报】按钮</div>
<div class="info error-info">Message: element click intercepted: Element &lt;div data-v-6ef76e62=&quot;&quot; data-v-b2520026=&quot;&quot; class=&quot;nav_item&quot; id=&quot;CreateTopic&quot;&gt;...&lt;/div&gt; is not clickable at point (191, 358). Other element would receive the click: &lt;div data-v-b7819456=&quot;&quot; class=&quot;el-dialog__wrapper&quot; style=&quot;z-index: 2001;&quot;&gt;...&lt;/div&gt;
(Session info: chrome=137.0.7151.41)
Stacktrace:
GetHandleVerifier [0x0x7ff6548a91f5+2853845]
GetHandleVerifier [0x0x7ff654603ac0+79008]
(No symbol) [0x0x7ff6543c9bda]
(No symbol) [0x0x7ff6544280e9]
(No symbol) [0x0x7ff654425a8b]
(No symbol) [0x0x7ff654422ad1]
(No symbol) [0x0x7ff6544219d1]
(No symbol) [0x0x7ff654413004]
(No symbol) [0x0x7ff6544484ba]
(No symbol) [0x0x7ff6544128b6]
(No symbol) [0x0x7ff6544486d0]
(No symbol) [0x0x7ff6544708f5]
(No symbol) [0x0x7ff654448293]
(No symbol) [0x0x7ff654411061]
(No symbol) [0x0x7ff654411df3]
GetHandleVerifier [0x0x7ff6548d410d+3029741]
GetHandleVerifier [0x0x7ff6548ce52d+3006221]
GetHandleVerifier [0x0x7ff6548ed5b2+3133330]
GetHandleVerifier [0x0x7ff65461d98e+185198]
GetHandleVerifier [0x0x7ff654624edf+215231]
GetHandleVerifier [0x0x7ff65460c324+113924]
GetHandleVerifier [0x0x7ff65460c4d9+114361]
GetHandleVerifier [0x0x7ff6545f3208+11240]
BaseThreadInitThunk [0x0x7ffb2264e8d7+23]
RtlUserThreadStart [0x0x7ffb2449c5dc+44]
Traceback:
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py&quot;, line 37, in teststeps
safe_click((By.XPATH, &quot;//div[@id='CreateTopic']&quot;), wd)
File &quot;E:\GithubData\自动化\ubains-module-test\预定系统\Base\base.py&quot;, line 252, in safe_click
element.click()
File &quot;E:\Python\lib\site-packages\selenium\webdriver\remote\webelement.py&quot;, line 119, in click
self._execute(Command.CLICK_ELEMENT)
File &quot;E:\Python\lib\site-packages\selenium\webdriver\remote\webelement.py&quot;, line 572, in _execute
return self._parent.execute(command, params)
File &quot;E:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py&quot;, line 448, in execute
self.error_handler.check_response(response)
File &quot;E:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py&quot;, line 232, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element &lt;div data-v-6ef76e62=&quot;&quot; data-v-b2520026=&quot;&quot; class=&quot;nav_item&quot; id=&quot;CreateTopic&quot;&gt;...&lt;/div&gt; is not clickable at point (191, 358). Other element would receive the click: &lt;div data-v-b7819456=&quot;&quot; class=&quot;el-dialog__wrapper&quot; style=&quot;z-index: 2001;&quot;&gt;...&lt;/div&gt;
(Session info: chrome=137.0.7151.41)
Stacktrace:
GetHandleVerifier [0x0x7ff6548a91f5+2853845]
GetHandleVerifier [0x0x7ff654603ac0+79008]
(No symbol) [0x0x7ff6543c9bda]
(No symbol) [0x0x7ff6544280e9]
(No symbol) [0x0x7ff654425a8b]
(No symbol) [0x0x7ff654422ad1]
(No symbol) [0x0x7ff6544219d1]
(No symbol) [0x0x7ff654413004]
(No symbol) [0x0x7ff6544484ba]
(No symbol) [0x0x7ff6544128b6]
(No symbol) [0x0x7ff6544486d0]
(No symbol) [0x0x7ff6544708f5]
(No symbol) [0x0x7ff654448293]
(No symbol) [0x0x7ff654411061]
(No symbol) [0x0x7ff654411df3]
GetHandleVerifier [0x0x7ff6548d410d+3029741]
GetHandleVerifier [0x0x7ff6548ce52d+3006221]
GetHandleVerifier [0x0x7ff6548ed5b2+3133330]
GetHandleVerifier [0x0x7ff65461d98e+185198]
GetHandleVerifier [0x0x7ff654624edf+215231]
GetHandleVerifier [0x0x7ff65460c324+113924]
GetHandleVerifier [0x0x7ff65460c4d9+114361]
GetHandleVerifier [0x0x7ff6545f3208+11240]
BaseThreadInitThunk [0x0x7ffb2264e8d7+23]
RtlUserThreadStart [0x0x7ffb2449c5dc+44]
</div>
</div>
</div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
<span class="executetime">2025-06-10 15:33:07</span>
</div>
<div class="folder_body"></div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\</span>
<span class="executetime">2025-06-10 15:33:09</span>
</div>
<div class="folder_body">
<div class="info">清除浏览器</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>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<title>兰州中石化项目议题申报测试报告</title>
<meta charset="UTF-8">
<style>body {
font-family: consolas, Verdana, sans-serif;
font-size: 1.2em;
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;
}
/* 模态框内容 */
.modal-content {
margin: auto;
display: block;
width: 95%;
max-width: 700px;
max-height: 80vh; /* 设置最大高度为视口高度的80% */
object-fit: contain; /* 保持图片的宽高比 */
zoom: 3;
}
/* 模态框 */
.modal {
display: none; /* 隐藏 */
position: fixed; /* 固定位置 */
z-index: 1; /* 坐在顶部 */
padding-top: 40px; /* 在图片上方添加一些内边距 */
left: 0;
top: 0;
width: 100%; /* 宽度 */
height: 100%; /* 高度 */
overflow: auto; /* 启用滚动 */
background-color: rgb(0,0,0); /* 背景颜色 */
background-color: rgba(0,0,0,0.9); /* 黑色背景半透明 */
}
/* 关闭按钮 */
.close {
position: absolute; /* 定义元素的定位方式为绝对定位 */
top: 10px; /* 距离最近的已定位祖先元素顶部15像素 */
right: 30px; /* 距离最近的已定位祖先元素右侧35像素 */
color: #f1f1f1; /* 文本颜色为浅灰色 */
font-size: 15px; /* 字体大小为40像素 */
font-weight: bold; /* 字体加粗 */
transition: 0.3s; /* 过渡效果,0.3秒内完成 */
}
.close:hover,
.close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
</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");
// 获取所有图片元素
let images = document.querySelectorAll('.modal-image');
// 获取模态框元素
let modal = document.getElementById("imageModal");
// 获取模态框中的图片元素
let modalImg = document.getElementById("img01");
// 获取关闭按钮元素
let span = document.getElementsByClassName("close")[0];
// 为每个图片添加点击事件监听器
images.forEach(function(img) {
img.addEventListener("click", function() {
modal.style.display = "block"; // 显示模态框
modalImg.src = this.src; // 设置模态框中的图片为点击的图片
});
});
// 当点击关闭按钮时,隐藏模态框
span.onclick = function() {
modal.style.display = "none";
};
// 当点击模态框外区域时,隐藏模态框
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
};
});
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="modal" id="imageModal">
<div>
<img class="modal-content" id="img01">
<span class="close">关闭</span>
</div>
</div>
<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>2025/06/10 15:36:24</td>
</tr>
<tr>
<td>结束时间</td>
<td>2025/06/10 15:38:16</td>
</tr>
<tr>
<td>耗时</td>
<td>112.179 秒</td>
</tr>
<tr>
<td>预备执行用例数量</td>
<td>3</td>
</tr>
<tr>
<td>实际执用例行数量</td>
<td>3</td>
</tr>
<tr>
<td>通过</td>
<td>3</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>
<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>用例通过 100% : 3 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 100.0%; 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>用例异常 0% : 0 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 0.0%; 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>
<div class="suite_dir" id="suite_dir cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div>
<span class="label">进入目录</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
</div>
<div class="suite_setup setup" id="suite_setup setup cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div class="folder_header">
<span class="label">套件初始化</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
<span class="executetime">2025-06-10 15:36:24</span>
</div>
<div class="folder_body">
<div class="case_step">
<span class="tag">步骤 #1</span>
<span>初始化浏览器</span>
</div>
<div class="info">'----------' 正在初始化浏览器 '----------'</div>
<div class="info">'----------' 浏览器初始化完成 '----------'</div>
<div class="info">输入用户名:admin</div>
<div class="info">输入密码:Ubains@4321</div>
<div class="info">输入验证码:csba</div>
<div class="info">点击登录按钮</div>
</div>
</div>
</div>
<div class="suite_file" id="suite_file cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py">
<div>
<span class="label">进入文件</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py</span>
</div>
<div class="case pass" id="case_00000001">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">议题申报001</span>
<span class="executetime">2025-06-10 15:36:38</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py::TopicDeclaration</span>
<div class="test_steps" id="test_steps 议题申报001">
<span class="label">测试步骤</span>
<div class="info">点击【议题申报】按钮</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //body/div[@class='el-dialog__wrapper']/div[@aria-label='dialog']/div[@class='el-dialog__body']/div[@class='dialog_content']/div[1]/div[2]/div[1]/div[1]、元素类型: getText、元素值: 、预期结果: admin</div>
<div class="info">获取到的文本信息为:申报人:
admin</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:申报人:
admin</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610153639402739.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000002">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">议题申报003</span>
<span class="executetime">2025-06-10 15:36:42</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py::TopicDeclaration</span>
<div class="test_steps" id="test_steps 议题申报003">
<span class="label">测试步骤</span>
<div class="info">点击【议题申报】按钮</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //button[@id='create-topic-submit-button']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //p[@class='el-message__content']、元素类型: getTips、元素值: 、预期结果: 请输入议题名称</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610153645836984.png" width="50%">
</div>
<div class="info">获取到的提示信息为:请输入议题名称</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的提示信息为:请输入议题名称</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610153647998160.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000003">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">议题申报004</span>
<span class="executetime">2025-06-10 15:36:50</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\议题申报\议题申报.py::TopicDeclaration</span>
<div class="test_steps" id="test_steps 议题申报004">
<span class="label">测试步骤</span>
<div class="info">点击【议题申报】按钮</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-name-input']、元素类型: input、元素值: 议题申报测试003、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-type-select']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[@x-placement='bottom-start']//li[2]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //textarea[@id='create-topic-remarks-textarea']、元素类型: input、元素值: 测试上会依据、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@placeholder='请选择责任单位']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //span[contains(text(),'测试部门')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //button[@id='tree-selector-confirm']//span[contains(text(),'确定')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-reporter-select']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[@x-placement='bottom-start']//span[contains(text(),'陈部门领导')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-proposed-meeting-time-datepicker']、元素类型: input、元素值: 2025-06-25、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-reporting-duration-select']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //span[contains(text(),'15分钟')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-department-leader-select']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //li[@class='el-select-dropdown__item']//span[contains(text(),'陈部门领导')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-company-leader-select']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[@x-placement='bottom-start']//span[contains(text(),'范公司主管领导')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //input[@id='create-topic-commission-leader-select']、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //li[@class='el-select-dropdown__item hover']//span[contains(text(),'陈公司委托领导')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">TimeoutException: Element ('xpath', &quot;//li[@class='el-select-dropdown__item hover']//span[contains(text(),'陈公司委托领导')]&quot;) not found or not clickable within 20 seconds.</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //button[@id='create-topic-submit-button']//span[contains(text(),'提交')]、元素类型: click、元素值: 、预期结果: </div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //p[@class='el-message__content']、元素类型: getTips、元素值: 、预期结果: 提交成功</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610153753455878.png" width="50%">
</div>
<div class="info">获取到的提示信息为:提交成功</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的提示信息为:提交成功</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610153755613613.png" width="75">
</div>
</div>
</div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\项目定制\兰州中石化项目25-05-24\议题申报\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\项目定制\兰州中石化项目25-05-24\议题申报\</span>
<span class="executetime">2025-06-10 15:37:57</span>
</div>
<div class="folder_body"></div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\</span>
<span class="executetime">2025-06-10 15:38:00</span>
</div>
<div class="folder_body">
<div class="info">清除浏览器</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="none">
<div class="menu-item" onclick="previous_error()" title="上一个错误"></div>
<div class="menu-item" onclick="next_error()" title="下一个错误"></div>
</div>
</div>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html>
<html>
<head>
<title>兰州中石化项目代办事宜测试报告</title>
<meta charset="UTF-8">
<style>body {
font-family: consolas, Verdana, sans-serif;
font-size: 1.2em;
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;
}
/* 模态框内容 */
.modal-content {
margin: auto;
display: block;
width: 95%;
max-width: 700px;
max-height: 80vh; /* 设置最大高度为视口高度的80% */
object-fit: contain; /* 保持图片的宽高比 */
zoom: 3;
}
/* 模态框 */
.modal {
display: none; /* 隐藏 */
position: fixed; /* 固定位置 */
z-index: 1; /* 坐在顶部 */
padding-top: 40px; /* 在图片上方添加一些内边距 */
left: 0;
top: 0;
width: 100%; /* 宽度 */
height: 100%; /* 高度 */
overflow: auto; /* 启用滚动 */
background-color: rgb(0,0,0); /* 背景颜色 */
background-color: rgba(0,0,0,0.9); /* 黑色背景半透明 */
}
/* 关闭按钮 */
.close {
position: absolute; /* 定义元素的定位方式为绝对定位 */
top: 10px; /* 距离最近的已定位祖先元素顶部15像素 */
right: 30px; /* 距离最近的已定位祖先元素右侧35像素 */
color: #f1f1f1; /* 文本颜色为浅灰色 */
font-size: 15px; /* 字体大小为40像素 */
font-weight: bold; /* 字体加粗 */
transition: 0.3s; /* 过渡效果,0.3秒内完成 */
}
.close:hover,
.close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
</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");
// 获取所有图片元素
let images = document.querySelectorAll('.modal-image');
// 获取模态框元素
let modal = document.getElementById("imageModal");
// 获取模态框中的图片元素
let modalImg = document.getElementById("img01");
// 获取关闭按钮元素
let span = document.getElementsByClassName("close")[0];
// 为每个图片添加点击事件监听器
images.forEach(function(img) {
img.addEventListener("click", function() {
modal.style.display = "block"; // 显示模态框
modalImg.src = this.src; // 设置模态框中的图片为点击的图片
});
});
// 当点击关闭按钮时,隐藏模态框
span.onclick = function() {
modal.style.display = "none";
};
// 当点击模态框外区域时,隐藏模态框
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
};
});
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="modal" id="imageModal">
<div>
<img class="modal-content" id="img01">
<span class="close">关闭</span>
</div>
</div>
<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>2025/06/10 19:48:02</td>
</tr>
<tr>
<td>结束时间</td>
<td>2025/06/10 19:49:06</td>
</tr>
<tr>
<td>耗时</td>
<td>64.119 秒</td>
</tr>
<tr>
<td>预备执行用例数量</td>
<td>5</td>
</tr>
<tr>
<td>实际执用例行数量</td>
<td>5</td>
</tr>
<tr>
<td>通过</td>
<td>5</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>
<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>用例通过 100% : 5 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 100.0%; 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>用例异常 0% : 0 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 0.0%; 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>
<div class="suite_dir" id="suite_dir cases\项目定制\兰州中石化项目25-05-24\代办事宜\">
<div>
<span class="label">进入目录</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\</span>
</div>
<div class="suite_setup setup" id="suite_setup setup cases\项目定制\兰州中石化项目25-05-24\代办事宜\">
<div class="folder_header">
<span class="label">套件初始化</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\</span>
<span class="executetime">2025-06-10 19:48:02</span>
</div>
<div class="folder_body">
<div class="case_step">
<span class="tag">步骤 #1</span>
<span>初始化浏览器</span>
</div>
<div class="info">'----------' 正在初始化浏览器 '----------'</div>
<div class="info">'----------' 浏览器初始化完成 '----------'</div>
<div class="info">输入用户名:test@user2</div>
<div class="info">输入密码:Ubains@1357</div>
<div class="info">输入验证码:csba</div>
<div class="info">点击登录按钮</div>
<div class="info">点击【代办事宜】按钮</div>
</div>
</div>
</div>
<div class="suite_file" id="suite_file cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py">
<div>
<span class="label">进入文件</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py</span>
</div>
<div class="case pass" id="case_00000001">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜001</span>
<span class="executetime">2025-06-10 19:48:09</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜001">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //div[@class='content']//div[1]//div[2]//div[1]//div[1]//div[2]//input[1]、元素类型: input、元素值: 自动化、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194816304368.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/button[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194818619813.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: css selector、元素定位值: body &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(3) &gt; table:nth-child(1) &gt; tbody:nth-child(2) &gt; tr:nth-child(1) &gt; td:nth-child(2) &gt; div:nth-child(1) &gt; span:nth-child(1)、元素类型: getText、元素值: 、预期结果: 自动化</div>
<div class="info">获取到的文本信息为:自动化-议题申报测试005</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:自动化-议题申报测试005</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194818817806.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000002">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜002</span>
<span class="executetime">2025-06-10 19:48:18</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜002">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //div[@class='content']//div[1]//div[2]//div[1]//div[1]//div[2]//input[1]、元素类型: input、元素值: 自动化、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194821336657.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/button[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194823574591.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: css selector、元素定位值: body &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(3) &gt; table:nth-child(1) &gt; tbody:nth-child(2) &gt; tr:nth-child(1) &gt; td:nth-child(2) &gt; div:nth-child(1) &gt; span:nth-child(1)、元素类型: getText、元素值: 、预期结果: 自动化</div>
<div class="info">获取到的文本信息为:自动化-议题申报测试005</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:自动化-议题申报测试005</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194823741103.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000003">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜003</span>
<span class="executetime">2025-06-10 19:48:23</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜003">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194826462447.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[contains(@class,'cell')][contains(text(),'陈部门领导')]、元素类型: getText、元素值: 、预期结果: 陈部门领导</div>
<div class="info">获取到的文本信息为:陈部门领导</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:陈部门领导</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194826651822.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000004">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜004</span>
<span class="executetime">2025-06-10 19:48:26</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜004">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194829342155.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //button[@id='create-meeting-submit-button']、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194831583610.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: 、元素类型: login、元素值: 、预期结果: </div>
<div class="info">输入用户名:test@user1</div>
<div class="info">输入密码:Ubains@1357</div>
<div class="info">输入验证码:csba</div>
<div class="info">点击登录按钮</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194838427059.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[contains(@class,'cell')][contains(text(),'范公司主管领导')]、元素类型: getText、元素值: 、预期结果: 范公司主管领导</div>
<div class="info">获取到的文本信息为:范公司主管领导</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:范公司主管领导</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194838617856.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000005">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜005</span>
<span class="executetime">2025-06-10 19:48:38</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜005">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194841383828.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //button[@id='create-meeting-submit-button']、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194843608797.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[contains(@class,'content')]//div[2]//div[2]//div[1]//div[1]//div[2]//input[1]、元素类型: input、元素值: 、预期结果: 自动化</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194845861002.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[2]/div[2]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194848084560.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: css selector、元素定位值: body &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(3) &gt; table:nth-child(1) &gt; tbody:nth-child(2) &gt; tr:nth-child(1) &gt; td:nth-child(2) &gt; div:nth-child(1) &gt; span:nth-child(1)、元素类型: getText、元素值: 、预期结果: 自动化</div>
<div class="info">获取到的文本信息为:自动化-议题申报测试005</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:自动化-议题申报测试005</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610194848271888.png" width="75">
</div>
</div>
</div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\项目定制\兰州中石化项目25-05-24\代办事宜\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\</span>
<span class="executetime">2025-06-10 19:48:48</span>
</div>
<div class="folder_body"></div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\</span>
<span class="executetime">2025-06-10 19:48:50</span>
</div>
<div class="folder_body">
<div class="info">清除浏览器</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="none">
<div class="menu-item" onclick="previous_error()" title="上一个错误"></div>
<div class="menu-item" onclick="next_error()" title="下一个错误"></div>
</div>
</div>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<title>兰州中石化项目代办事宜测试报告</title>
<meta charset="UTF-8">
<style>body {
font-family: consolas, Verdana, sans-serif;
font-size: 1.2em;
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;
}
/* 模态框内容 */
.modal-content {
margin: auto;
display: block;
width: 95%;
max-width: 700px;
max-height: 80vh; /* 设置最大高度为视口高度的80% */
object-fit: contain; /* 保持图片的宽高比 */
zoom: 3;
}
/* 模态框 */
.modal {
display: none; /* 隐藏 */
position: fixed; /* 固定位置 */
z-index: 1; /* 坐在顶部 */
padding-top: 40px; /* 在图片上方添加一些内边距 */
left: 0;
top: 0;
width: 100%; /* 宽度 */
height: 100%; /* 高度 */
overflow: auto; /* 启用滚动 */
background-color: rgb(0,0,0); /* 背景颜色 */
background-color: rgba(0,0,0,0.9); /* 黑色背景半透明 */
}
/* 关闭按钮 */
.close {
position: absolute; /* 定义元素的定位方式为绝对定位 */
top: 10px; /* 距离最近的已定位祖先元素顶部15像素 */
right: 30px; /* 距离最近的已定位祖先元素右侧35像素 */
color: #f1f1f1; /* 文本颜色为浅灰色 */
font-size: 15px; /* 字体大小为40像素 */
font-weight: bold; /* 字体加粗 */
transition: 0.3s; /* 过渡效果,0.3秒内完成 */
}
.close:hover,
.close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
</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");
// 获取所有图片元素
let images = document.querySelectorAll('.modal-image');
// 获取模态框元素
let modal = document.getElementById("imageModal");
// 获取模态框中的图片元素
let modalImg = document.getElementById("img01");
// 获取关闭按钮元素
let span = document.getElementsByClassName("close")[0];
// 为每个图片添加点击事件监听器
images.forEach(function(img) {
img.addEventListener("click", function() {
modal.style.display = "block"; // 显示模态框
modalImg.src = this.src; // 设置模态框中的图片为点击的图片
});
});
// 当点击关闭按钮时,隐藏模态框
span.onclick = function() {
modal.style.display = "none";
};
// 当点击模态框外区域时,隐藏模态框
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
};
});
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="modal" id="imageModal">
<div>
<img class="modal-content" id="img01">
<span class="close">关闭</span>
</div>
</div>
<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>2025/06/10 19:57:23</td>
</tr>
<tr>
<td>结束时间</td>
<td>2025/06/10 19:58:35</td>
</tr>
<tr>
<td>耗时</td>
<td>71.938 秒</td>
</tr>
<tr>
<td>预备执行用例数量</td>
<td>5</td>
</tr>
<tr>
<td>实际执用例行数量</td>
<td>5</td>
</tr>
<tr>
<td>通过</td>
<td>5</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>
<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>用例通过 100% : 5 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 100.0%; 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>用例异常 0% : 0 个</span>
<div class="barchart_barbox">
<div class="barchart_bar" style="width: 0.0%; 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>
<div class="suite_dir" id="suite_dir cases\项目定制\兰州中石化项目25-05-24\代办事宜\">
<div>
<span class="label">进入目录</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\</span>
</div>
<div class="suite_setup setup" id="suite_setup setup cases\项目定制\兰州中石化项目25-05-24\代办事宜\">
<div class="folder_header">
<span class="label">套件初始化</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\</span>
<span class="executetime">2025-06-10 19:57:23</span>
</div>
<div class="folder_body">
<div class="case_step">
<span class="tag">步骤 #1</span>
<span>初始化浏览器</span>
</div>
<div class="info">'----------' 正在初始化浏览器 '----------'</div>
<div class="info">'----------' 浏览器初始化完成 '----------'</div>
<div class="info">输入用户名:test@user2</div>
<div class="info">输入密码:Ubains@1357</div>
<div class="info">输入验证码:csba</div>
<div class="info">点击登录按钮</div>
<div class="info">点击【代办事宜】按钮</div>
</div>
</div>
</div>
<div class="suite_file" id="suite_file cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py">
<div>
<span class="label">进入文件</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py</span>
</div>
<div class="case pass" id="case_00000001">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜001</span>
<span class="executetime">2025-06-10 19:57:31</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜001">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //div[@class='content']//div[1]//div[2]//div[1]//div[1]//div[2]//input[1]、元素类型: input、元素值: 自动化、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195739814315.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/button[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195742122302.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: css selector、元素定位值: body &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(3) &gt; table:nth-child(1) &gt; tbody:nth-child(2) &gt; tr:nth-child(1) &gt; td:nth-child(2) &gt; div:nth-child(1) &gt; span:nth-child(1)、元素类型: getText、元素值: 、预期结果: 自动化</div>
<div class="info">获取到的文本信息为:自动化-议题申报测试005</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:自动化-议题申报测试005</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195742317923.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000002">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜002</span>
<span class="executetime">2025-06-10 19:57:42</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜002">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //div[@class='content']//div[1]//div[2]//div[1]//div[1]//div[2]//input[1]、元素类型: input、元素值: 自动化、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195744812401.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/button[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195747087141.png" width="75">
</div>
<div class="info">页面: AgencyMatters、元素定位类型: css selector、元素定位值: body &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(3) &gt; table:nth-child(1) &gt; tbody:nth-child(2) &gt; tr:nth-child(1) &gt; td:nth-child(2) &gt; div:nth-child(1) &gt; span:nth-child(1)、元素类型: getText、元素值: 、预期结果: 自动化</div>
<div class="info">获取到的文本信息为:自动化-议题申报测试005</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:自动化-议题申报测试005</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195747270608.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000003">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜003</span>
<span class="executetime">2025-06-10 19:57:47</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜003">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195749967534.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[contains(@class,'cell')][contains(text(),'陈部门领导')]、元素类型: getText、元素值: 、预期结果: 陈部门领导</div>
<div class="info">获取到的文本信息为:陈部门领导</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:陈部门领导</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195750148386.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000004">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜004</span>
<span class="executetime">2025-06-10 19:57:50</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜004">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195752851935.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //button[@id='create-meeting-submit-button']、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195755079609.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //p[@class='el-message__content']、元素类型: getTips、元素值: 、预期结果: 审批成功</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195755240409.png" width="50%">
</div>
<div class="info">获取到的提示信息为:审批成功</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的提示信息为:审批成功</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195757410119.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: 、元素类型: login、元素值: ['test@user1', 'Ubains@1357']、预期结果: </div>
<div class="info">输入用户名:test@user1</div>
<div class="info">输入密码:Ubains@1357</div>
<div class="info">输入验证码:csba</div>
<div class="info">点击登录按钮</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195804197836.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[contains(@class,'cell')][contains(text(),'范公司主管领导')]、元素类型: getText、元素值: 、预期结果: 范公司主管领导</div>
<div class="info">获取到的文本信息为:范公司主管领导</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:范公司主管领导</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195804417002.png" width="75">
</div>
</div>
</div>
</div>
<div class="case pass" id="case_00000005">
<div class="folder_header">
<span class="label caselabel">用例 PASS</span>
<span class="casename">代办事宜005</span>
<span class="executetime">2025-06-10 19:58:04</span>
</div>
<div class="folder_body">
<span class="case_class_path">cases\项目定制\兰州中石化项目25-05-24\代办事宜\代办事宜.py::AgencyMatters</span>
<div class="test_steps" id="test_steps 代办事宜005">
<span class="label">测试步骤</span>
<div class="info">页面: AgencyMatters、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[3]/table[1]/tbody[1]/tr[1]/td[5]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195807186779.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //button[@id='create-meeting-submit-button']、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195809426860.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //p[@class='el-message__content']、元素类型: getTips、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195809623572.png" width="50%">
</div>
<div class="info">获取到的提示信息为:审批成功</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的提示信息为:审批成功</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195811795301.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //div[contains(@class,'content')]//div[2]//div[2]//div[1]//div[1]//div[2]//input[1]、元素类型: input、元素值: 、预期结果: 自动化</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195814057312.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: xpath、元素定位值: //body[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[2]/div[2]/div[1]/button[1]/span[1]、元素类型: click、元素值: 、预期结果: </div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195816309826.png" width="75">
</div>
<div class="info">页面: TopicDeclaration、元素定位类型: css selector、元素定位值: body &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(1) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(1) &gt; div:nth-child(3) &gt; table:nth-child(1) &gt; tbody:nth-child(2) &gt; tr:nth-child(1) &gt; td:nth-child(2) &gt; div:nth-child(1) &gt; span:nth-child(1)、元素类型: getText、元素值: 、预期结果: 自动化</div>
<div class="info">获取到的文本信息为:自动化-议题申报测试005</div>
<div class="checkpoint_pass">
<span class="tag">检查点 PASS</span>
<span>获取到的文本信息为:自动化-议题申报测试005</span>
</div>
<div>
<img class="modal-image screenshot" src="imgs/20250610195816507662.png" width="75">
</div>
</div>
</div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\项目定制\兰州中石化项目25-05-24\代办事宜\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\项目定制\兰州中石化项目25-05-24\代办事宜\</span>
<span class="executetime">2025-06-10 19:58:16</span>
</div>
<div class="folder_body"></div>
</div>
<div class="suite_teardown teardown" id="suite_teardown teardown cases\">
<div class="folder_header">
<span class="label">套件清除</span>
<span>cases\</span>
<span class="executetime">2025-06-10 19:58:18</span>
</div>
<div class="folder_body">
<div class="info">清除浏览器</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="none">
<div class="menu-item" onclick="previous_error()" title="上一个错误"></div>
<div class="menu-item" onclick="next_error()" title="下一个错误"></div>
</div>
</div>
</body>
</html>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论