提交 57547ecf authored 作者: 陈泽健's avatar 陈泽健

调整优化,验证自动化控制window桌面应用。

上级 b22bf704
...@@ -18,7 +18,7 @@ logging.basicConfig( ...@@ -18,7 +18,7 @@ logging.basicConfig(
执行指令: 执行指令:
1.打开一个终端输入: 1.打开一个终端输入:
- cd .\运维集控\项目测试\运维标准版\ - cd .\运维集控\项目测试\运维标准版\
- python -m http.server 80 --directory reports - python -m http.server 80 --directory log
2.打开新终端输入: 2.打开新终端输入:
- cd .\运维集控\ - cd .\运维集控\
- cd .\运维集控\项目测试\运维标准版\ngrok\ - cd .\运维集控\项目测试\运维标准版\ngrok\
......
...@@ -865,4 +865,12 @@ def check_service_status(host, port): ...@@ -865,4 +865,12 @@ def check_service_status(host, port):
# 关闭连接 # 关闭连接
tn.close() tn.close()
except Exception as e: except Exception as e:
INFO(f"连接失败: {e}") INFO(f"连接失败: {e}")
\ No newline at end of file
def set_tx_meeting_id(element_locator, wd):
tx_meeting_id = elment_get_text(element_locator, wd)
GSTORE['tx_meeting_id'] = tx_meeting_id
def get_tx_meeting_id():
return GSTORE.get('tx_meeting_id')
...@@ -178,4 +178,6 @@ ...@@ -178,4 +178,6 @@
- 优化browser_init初始化函数的传参方式以及系统环境判断处理。优化ngrok以及定时任务注解。 - 优化browser_init初始化函数的传参方式以及系统环境判断处理。优化ngrok以及定时任务注解。
- 调整优化。处理截屏函数的兼容性,优化URL的判断。 - 调整优化。处理截屏函数的兼容性,优化URL的判断。
- 系统地址获取方式改为读取config.json进行获取对应的环境信息。 - 系统地址获取方式改为读取config.json进行获取对应的环境信息。
- 封装配置项读取函数增加异常处理判断,调整涉及的相关代码部分,调整模拟器adb连接初始化方式。 - 封装配置项读取函数增加异常处理判断,调整涉及的相关代码部分,调整模拟器adb连接初始化方式。
\ No newline at end of file 43. 2025-01-17
- 调整优化。
\ No newline at end of file
from pywinauto import Application, Desktop
from pywinauto.timings import wait_until_passes, TimeoutError
import os
import logging
# 确保日志配置是第一个被执行的语句
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
def check_path():
path = r"D:\腾讯会议\WeMeet\WeMeetApp.exe"
if not os.path.exists(path):
logging.error(f"路径 {path} 不存在")
return False
if not os.access(path, os.X_OK):
logging.error(f"路径 {path} 不可执行")
return False
logging.info(f"路径 {path} 存在且可执行")
return True
def find_window(app, title_re):
try:
window = app.window(title_re=title_re)
logging.info(f"找到窗口: {window.window_text()}")
return window
except Exception as e:
logging.error(f"查找窗口时出错: {e}")
return None
def print_all_window_titles():
desktop = Desktop(backend="uia")
for window in desktop.windows():
logging.info(f"窗口标题: {window.window_text()}")
def tx_run():
logging.debug("tx_run 函数开始执行")
# 启动腾讯会议
try:
app = Application(backend="uia").start(r"D:\腾讯会议\WeMeet\WeMeetApp.exe")
logging.debug("启动腾讯会议完成")
except Exception as e:
logging.error(f"启动腾讯会议时出错: {e}")
return
# 打印所有窗口标题
print_all_window_titles()
# 等待腾讯会议窗口出现
try:
wait_until_passes(60, 1, lambda: app.window(title_re=".*腾讯会议.*").exists())
logging.info("腾讯会议窗口已找到")
except TimeoutError:
logging.error("腾讯会议窗口未在规定时间内出现")
return
# 连接到腾讯会议窗口
main_window = find_window(app, ".*腾讯会议.*")
if main_window is None:
return
# 打印窗口中的所有控件信息
main_window.print_control_identifiers()
# 点击“加入会议”按钮
try:
join_button = main_window.child_window(title="加入会议", control_type="Button")
logging.info(join_button.window_text()) # 打印按钮标题以验证控件是否找到
join_button.click()
logging.info("点击“加入会议”按钮完成")
except Exception as e:
logging.error(f"点击“加入会议”按钮时出错: {e}")
return
# 等待加入会议窗口出现
try:
wait_until_passes(60, 1, lambda: app.window(title_re=".*加入会议.*").exists())
logging.info("加入会议窗口已找到")
except TimeoutError:
logging.error("加入会议窗口未在规定时间内出现")
return
# 输入会议号
meeting_id = "123456789" # 替换为实际的会议号
try:
meeting_id_edit = main_window.child_window(title="会议号", control_type="Edit")
logging.info(meeting_id_edit.window_text()) # 打印编辑框标题以验证控件是否找到
meeting_id_edit.type_keys(meeting_id)
logging.info("输入会议号完成")
except Exception as e:
logging.error(f"输入会议号时出错: {e}")
return
# 点击“加入”按钮
try:
join_meeting_button = main_window.child_window(title="加入", control_type="Button")
logging.info(join_meeting_button.window_text()) # 打印按钮标题以验证控件是否找到
join_meeting_button.click()
logging.info("点击“加入”按钮完成")
except Exception as e:
logging.error(f"点击“加入”按钮时出错: {e}")
return
# 等待会议界面出现
try:
wait_until_passes(60, 1, lambda: app.window(title_re=".*腾讯会议.*").exists())
logging.info("会议界面已找到")
except TimeoutError:
logging.error("会议界面未在规定时间内出现")
return
# 静音麦克风
try:
mute_button = main_window.child_window(title="麦克风", control_type="Button")
logging.info(mute_button.window_text()) # 打印按钮标题以验证控件是否找到
mute_button.click()
logging.info("静音麦克风完成")
except Exception as e:
logging.error(f"静音麦克风时出错: {e}")
return
# 退出会议
try:
end_meeting_button = main_window.child_window(title="结束会议", control_type="Button")
logging.info(end_meeting_button.window_text()) # 打印按钮标题以验证控件是否找到
end_meeting_button.click()
logging.info("结束会议完成")
except Exception as e:
logging.error(f"结束会议时出错: {e}")
return
logging.debug("tx_run 函数执行完毕")
if __name__ == "__main__":
try:
if check_path():
tx_run()
except Exception as e:
logging.error(f"程序执行时出错: {e}")
...@@ -71,10 +71,10 @@ def start_workers(num_workers): ...@@ -71,10 +71,10 @@ def start_workers(num_workers):
start_workers(3) start_workers(3)
# 定时执行预定系统测试任务 # 定时执行预定系统测试任务
schedule.every().day.at("08:00").do(run_task, run_automation_test, report_title="预定系统测试报告", report_url_prefix="http://nat.ubainsyun.com:31134", test_case="预定系统功能", ding_type="标准版巡检") # schedule.every().day.at("08:00").do(run_task, run_automation_test, report_title="预定系统测试报告", report_url_prefix="http://nat.ubainsyun.com:31134", test_case="预定系统功能", ding_type="标准版巡检")
# 定时执行展厅巡检任务 # 定时执行展厅巡检任务
# schedule.every().day.at("07:50").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检") schedule.every().day.at("07:50").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
try: try:
# 无限循环,持续检查并执行计划任务 # 无限循环,持续检查并执行计划任务
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论