Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
U
ubains-module-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
郑晓兵
ubains-module-test
Commits
3102a32a
提交
3102a32a
authored
8月 20, 2025
作者:
陈泽健
1
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor(预定系统):
- 更新展厅巡检结尾步骤,增加腾讯会议、讯飞转录以及SMC选项
上级
34f8058a
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
89 行增加
和
157 行删除
+89
-157
README.md
预定系统/README.md
+4
-2
01展厅会议室中控屏.py
预定系统/cases/展厅巡检/11环境清除/01展厅会议室中控屏.py
+58
-53
新-账号密码登录测试.py
预定系统/cases/登录模块/新-账号密码登录测试.py
+22
-97
__st__.py
预定系统/cases/项目定制/长安大学项目25-03-17/__st__.py
+1
-1
长安大学测试.py
预定系统/cases/项目定制/长安大学项目25-03-17/长安大学测试.py
+4
-4
testresult.log
预定系统/log/testresult.log
+0
-0
testresult.log.1
预定系统/log/testresult.log.1
+0
-0
testresult.log.2
预定系统/log/testresult.log.2
+0
-0
会议预定测试用例.xlsx
预定系统/测试数据/会议预定测试用例.xlsx
+0
-0
没有找到文件。
预定系统/README.md
浏览文件 @
3102a32a
...
...
@@ -328,4 +328,6 @@
-
删除原函数,避免混淆。
-
read_xlsx_data函数优化,调试兰州中石化项目自动化测试。
97.
2025-07-01:
-
feat(预定系统): 更新脚本支持多环境配置,新增 JSON 配置文件,支持不同环境的配置,重构代码,实现环境配置的动态加载- 添加命令行参数,允许选择更新环境,优化日志输出,提高错误处理能力。
\ No newline at end of file
-
feat(预定系统): 更新脚本支持多环境配置,新增 JSON 配置文件,支持不同环境的配置,重构代码,实现环境配置的动态加载- 添加命令行参数,允许选择更新环境,优化日志输出,提高错误处理能力。
98.
2025-08-20:
-
更新展厅巡检结尾步骤,增加腾讯会议、讯飞转录以及SMC选项。
\ No newline at end of file
预定系统/cases/展厅巡检/11环境清除/01展厅会议室中控屏.py
浏览文件 @
3102a32a
...
...
@@ -28,53 +28,53 @@ class ExhibitionMeetingControl:
执行测试步骤以自动化测试腾讯会议应用的登录和会议加入流程。
该方法初始化应用驱动,等待应用加载,定位并点击会议按钮,加入会议,并截取会议画面。
"""
app_drive
=
None
try
:
# 初始化应用驱动,连接到指定的设备和应用
app_drive
=
app_setup_driver
(
"Android"
,
"5.1.1"
,
"UT-12"
,
"com.ubains.gviewer.develop"
,
"com.ubains.gviewer.activity.SplashActivity"
,
"192.168.5.142:5555"
)
app_drive
.
implicitly_wait
(
60
)
# 设置缺省等待时间
logging
.
info
(
"等待登录页加载..."
)
sleep
(
20
)
# 点击左上角logo进入后台
enter_back_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/android.widget.Button[1]"
)
logging
.
info
(
"点击左上角logo进入后台"
)
enter_back_button
.
click
()
sleep
(
10
)
# 点击【系统关】按钮
system_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[2]/android.widget.Button[9]"
)
logging
.
info
(
"点击【系统关】按钮"
)
system_off_button
.
click
()
sleep
(
10
)
# 点击【主页】按钮
home_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[2]/android.widget.Button[1]"
)
logging
.
info
(
"点击【主页】按钮,返回主页界面"
)
home_button
.
click
()
sleep
(
10
)
# 点击【离开模式】按钮
quit_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[3]/android.widget.Button[15]"
)
logging
.
info
(
"点击【离开模式】按钮"
)
quit_button
.
click
()
sleep
(
10
)
# 点击【确定】按钮
safe_click_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[4]/android.widget.Button[1]"
)
logging
.
info
(
"点击【确定】按钮,展厅会议室环境设备已断电。"
)
safe_click_button
.
click
()
sleep
(
10
)
except
Exception
as
e
:
# 捕获并记录任何发生的错误
logging
.
error
(
f
"发生错误: {e}"
,
exc_info
=
True
)
#
app_drive = None
#
try:
#
# 初始化应用驱动,连接到指定的设备和应用
#
app_drive = app_setup_driver("Android", "5.1.1", "UT-12", "com.ubains.gviewer.develop",
#
"com.ubains.gviewer.activity.SplashActivity", "192.168.5.142:5555")
#
app_drive.implicitly_wait(60) # 设置缺省等待时间
#
logging.info("等待登录页加载...")
#
sleep(20)
#
#
# 点击左上角logo进入后台
#
enter_back_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/android.widget.Button[1]")
#
logging.info("点击左上角logo进入后台")
#
enter_back_button.click()
#
sleep(10)
#
#
# 点击【系统关】按钮
#
system_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[2]/android.widget.Button[9]")
#
logging.info("点击【系统关】按钮")
#
system_off_button.click()
#
sleep(10)
#
#
# 点击【主页】按钮
#
home_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[2]/android.widget.Button[1]")
#
logging.info("点击【主页】按钮,返回主页界面")
#
home_button.click()
#
sleep(10)
#
#
# 点击【离开模式】按钮
#
quit_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[3]/android.widget.Button[15]")
#
logging.info("点击【离开模式】按钮")
#
quit_button.click()
#
sleep(10)
#
#
# 点击【确定】按钮
#
safe_click_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[4]/android.widget.Button[1]")
#
logging.info("点击【确定】按钮,展厅会议室环境设备已断电。")
#
safe_click_button.click()
#
sleep(10)
#
#
except Exception as e:
#
# 捕获并记录任何发生的错误
#
logging.error(f"发生错误: {e}", exc_info=True)
# 补充预定系统会议创建
# 初始化通知文本为空字符串
...
...
@@ -102,20 +102,22 @@ class ExhibitionMeetingControl:
# 在会议预定第一步界面进行数据填入
STEP
(
3
,
"会议第一步数据填写"
)
INFO
(
f
"输入会议名称:{message_name},选择会议类型:视讯融合会议,选择预约类型:{book_type}"
)
f
"输入会议名称:{message_name},选择会议类型:视讯融合会议,
SMC3.0视频会议,腾讯会议,
选择预约类型:{book_type}"
)
# 输入会议名称
safe_send_keys
((
By
.
XPATH
,
"//input[@placeholder='请输入会议名称']"
),
message_name
,
wd
)
# 判断会议类型
safe_click
((
By
.
XPATH
,
"//div[@class='reserve_input']//span[@class='el-checkbox__label'][normalize-space()='SMC3.0视频会议']"
),
wd
)
safe_click
((
By
.
XPATH
,
f
"//div[@class='reserve_input']//span[@class='el-checkbox__label'][normalize-space()='讯飞语音转录']"
),
wd
)
wd
)
safe_click
((
By
.
XPATH
,
f
"//div[@class='reserve_input']//span[@class='el-checkbox__label'][normalize-space()='腾讯会议']"
),
wd
)
sleep
(
2
)
# 选择普通会议
safe_click
((
By
.
XPATH
,
f
"//span[contains(text(),'{book_type}')]"
),
wd
)
sleep
(
1
)
# 选择签到时间
INFO
(
"选择提前30分钟开始签到"
)
safe_click
((
By
.
XPATH
,
"(//span[@class='el-switch__core'])[2]"
),
wd
)
...
...
@@ -127,6 +129,9 @@ class ExhibitionMeetingControl:
current_time
=
get_current_time_formatted
()
INFO
(
f
"获取当前的时间{current_time}"
)
safe_click
((
By
.
XPATH
,
f
"//div[normalize-space()='{current_time}']"
),
wd
)
sleep
(
2
)
# 选择会议结束时间
safe_click
((
By
.
XPATH
,
"//div[normalize-space()='09:00']"
),
wd
)
sleep
(
1
)
# 在会议预定第二步界面进行数据填入
...
...
预定系统/cases/登录模块/新-账号密码登录测试.py
浏览文件 @
3102a32a
...
...
@@ -49,103 +49,28 @@ class Login:
safe_send_keys
((
locator_type
,
locator_value
),
element_value
,
wd
)
sleep
(
1
)
elif
element_type
==
'click'
:
INFO
(
"点击【登录】按钮"
)
elif
element_type
==
"click"
:
safe_click
((
locator_type
,
locator_value
),
wd
)
sleep
(
2
)
if
"成功"
in
expected_result
:
# 获取登录成功提示信息
notify_text
=
elment_get_text
((
By
.
CSS_SELECTOR
,
"div[class='meeting_t'] span:nth-child(1)"
),
wd
)
# 截屏并记录日志
SELENIUM_LOG_SCREEN
(
wd
,
'50
%
'
,
'Login'
,
'Login_Pwd'
,
"检查登录成功提示信息"
)
# 记录提示信息
INFO
(
f
"Alert text: {notify_text}"
)
CHECK_POINT
(
'检查是否出现提示弹窗'
,
"欢迎"
in
notify_text
)
# 检查提示信息是否包含“欢迎”
# if CHECK_POINT('检查是否出现提示弹窗', "欢迎" in notify_text):
# # 如果提示信息不正确,记录为失败
# write_xlsx_data(
# xlsx_file_path,
# "登录页面",
# name,
# f"失败,提示{notify_text}",
# r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Login\Login_Pwd\检查登录成功提示信息.png"
# )
# else:
# # 如果提示信息正确,记录为成功
# write_xlsx_data(
# xlsx_file_path,
# "登录页面",
# name,
# f"成功,正确提示:{notify_text}",
# r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Login\Login_Pwd\检查登录成功提示信息.png"
# )
# 点击退出登录按钮
safe_click
((
By
.
XPATH
,
"//img[@title='退出登录']"
),
wd
)
sleep
(
2
)
SELENIUM_LOG_SCREEN
(
wd
,
"75"
)
elif
"错误"
in
expected_result
:
# 获取登录错误提示信息
notify_text
=
get_notify_text
(
wd
,
(
By
.
XPATH
,
"//p[@class='el-message__content']"
),
'Login'
,
'Login_Pwd'
,
f
"检查{expected_result}登录的提示信息"
)
# 记录获取到的结果
INFO
(
f
"获取到的结果:{notify_text}"
)
CHECK_POINT
(
'检查是否出现提示弹窗'
,
expected_result
in
notify_text
)
# 检查提示信息是否包含预期的错误信息
# if CHECK_POINT('检查是否出现提示弹窗', expected_result in notify_text):
# # 如果提示信息不正确,记录为失败
# write_xlsx_data(
# xlsx_file_path,
# "登录页面",
# name,
# f"失败,提示:{notify_text}",
# r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Login\Login_Pwd\检查登录成功提示信息.png"
# )
# else:
# # 如果提示信息正确,记录为成功
# write_xlsx_data(
# xlsx_file_path,
# "登录页面",
# name,
# f"成功,正确提示:{notify_text}",
# r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Login\Login_Pwd\检查登录成功提示信息.png"
# )
sleep
(
2
)
elif
element_type
==
"login"
:
# 退出系统登录
safe_click
((
By
.
XPATH
,
"//div[@class='quit']"
),
wd
)
sleep
(
2
)
INFO
(
f
"开始登录,账号为:{element_value[0]},密码为:{element_value[1]}"
)
user_login
(
element_value
[
0
],
element_value
[
1
])
sleep
(
2
)
elif
element_type
==
"getTips"
:
notify_text
=
get_notify_text
(
wd
,
(
locator_type
,
locator_value
))
INFO
(
f
"获取到的提示信息为:{notify_text}"
)
sleep
(
2
)
CHECK_POINT
(
f
"获取到的提示信息为:{notify_text}"
,
expected_result
in
notify_text
)
SELENIUM_LOG_SCREEN
(
wd
,
"75"
)
elif
"请输入"
in
expected_result
:
# 获取登录提示信息
notify_text
=
get_notify_text
(
wd
,
(
By
.
XPATH
,
"//p[@class='el-message__content']"
),
'Login'
,
'Login_Pwd'
,
f
"检查{expected_result}登录的提示信息"
)
# 记录获取到的结果
INFO
(
f
"获取到的结果:{notify_text}"
)
CHECK_POINT
(
'检查是否出现提示弹窗'
,
expected_result
in
notify_text
)
# 检查提示信息是否包含预期的提示信息
# if CHECK_POINT('检查是否出现提示弹窗', expected_result in notify_text):
# # 如果提示信息不正确,记录为失败
# write_xlsx_data(
# xlsx_file_path,
# "登录页面",
# name,
# f"失败,提示:{notify_text}",
# r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Login\Login_Pwd\检查登录成功提示信息.png"
# )
# else:
# # 如果提示信息正确,记录为成功
# write_xlsx_data(
# xlsx_file_path,
# "登录页面",
# name,
# f"成功,正确提示:{notify_text}",
# r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Login\Login_Pwd\检查登录成功提示信息.png"
# )
sleep
(
2
)
\ No newline at end of file
elif
element_type
==
"getText"
:
text
=
elment_get_text
((
locator_type
,
locator_value
),
wd
)
INFO
(
f
"获取到的文本信息为:{text}"
)
CHECK_POINT
(
f
"获取到的文本信息为:{text}"
,
expected_result
in
text
)
SELENIUM_LOG_SCREEN
(
wd
,
"75"
)
\ No newline at end of file
预定系统/cases/项目定制/长安大学项目25-03-17/
会议审批/
__st__.py
→
预定系统/cases/项目定制/长安大学项目25-03-17/__st__.py
浏览文件 @
3102a32a
...
...
@@ -3,7 +3,7 @@ import os
from
hytest
import
*
# 获取 Base 目录的绝对路径,并加入 sys.path
sys
.
path
.
append
(
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'..'
,
'..'
,
'..'
,
'..'
,
'..'
)))
sys
.
path
.
append
(
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'..'
,
'..'
,
'..'
,
'..'
)))
from
预定系统
.
Base
.
base
import
*
def
suite_setup
():
...
...
预定系统/cases/项目定制/长安大学项目25-03-17/
会议审批/会议审批
.py
→
预定系统/cases/项目定制/长安大学项目25-03-17/
长安大学测试
.py
浏览文件 @
3102a32a
...
...
@@ -2,14 +2,14 @@ import sys
import
os
# 获取 Base 目录的绝对路径,并加入 sys.path
sys
.
path
.
append
(
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'..'
,
'..'
,
'..'
,
'..'
,
'..'
)))
sys
.
path
.
append
(
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'..'
,
'..'
,
'..'
,
'..'
)))
from
预定系统
.
Base
.
base
import
*
# 构建XLSX文件的绝对路径
# 获取当前脚本所在的目录
current_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
__file__
))
xlsx_file_path
=
os
.
path
.
join
(
current_dir
,
'..'
,
'..'
,
'..'
,
'..'
,
'测试数据'
,
'会议预定测试用例.xlsx'
)
# xlsx_file_path = os.path.join(预定系统_path, '测试数据', '长安大学测试用例.xlsx')
# 获取当前脚本所在的目录
xlsx_file_path
=
os
.
path
.
join
(
current_dir
,
'..'
,
'..'
,
'..'
,
'测试数据'
,
'会议预定测试用例.xlsx'
)
# xlsx_file_path = os.path.join(预定系统_path, '测试数据', '兰州中石化项目测试用例.xlsx')
class
ChangAnMessageApproval
:
tags
=
[
'长安大学取消审批测试'
]
...
...
预定系统/log/testresult.log
浏览文件 @
3102a32a
此差异已折叠。
点击以展开。
预定系统/log/testresult.log.1
浏览文件 @
3102a32a
此差异已折叠。
点击以展开。
预定系统/log/testresult.log.2
浏览文件 @
3102a32a
此差异已折叠。
点击以展开。
预定系统/测试数据/会议预定测试用例.xlsx
浏览文件 @
3102a32a
No preview for this file type
郑晓兵
@bing
被提及 issue
#1
·
8月 20, 2025
被提及 issue
#1
被提及 issue #1
切换提交列表
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论