当前位置: 首页 > article >正文

Python自动化界面操作:从基础到实战全攻略

一、自动化界面操作概述1.1 定义Python自动化界面操作是指通过代码模拟人工的鼠标、键盘操作或直接调用界面控件API实现对桌面应用、Web页面、移动端APP等图形界面的自动化控制无需人工干预即可完成重复性任务。1.2 常见应用场景场景类型典型应用举例核心价值GUI测试软件功能回归测试、兼容性测试替代人工重复点击提升测试效率批量数据处理表单批量录入、报表自动生成减少手动输入错误节省工时重复性操作自动化文件批量上传、网页数据抓取7*24小时运行降低人力成本定时任务执行每日自动打卡、定时数据备份无人值守避免遗漏跨系统数据同步从A系统导出数据并录入B系统打通系统壁垒提升数据流转效率1.3 技术分类技术类型实现原理适用场景代表工具基于API直接调用应用程序的接口/控件属性原生桌面应用、定制化系统PyWinAuto、PyQt自动化模拟输入模拟底层鼠标/键盘事件无API的通用桌面/Web应用PyAutoGUI、pynput图像识别基于屏幕像素/模板匹配定位元素无控件的界面如游戏、老旧软件OpenCV、Pillow、AirTestWeb自动化基于浏览器内核操控网页元素网页表单、Web应用测试Selenium、Playwright二、核心工具与库介绍2.1 PyAutoGUI跨平台模拟鼠标键盘操作核心特点跨平台Windows/macOS/Linux无需依赖应用源码模拟真实的鼠标移动、点击、拖拽键盘输入、快捷键支持屏幕截图、像素定位、防误操作保护如鼠标移到角落暂停。安装命令pipinstallpyautogui pillow# pillow依赖用于截图2.2 SeleniumWeb界面自动化测试核心特点支持Chrome/Firefox/Edge等主流浏览器直接定位网页元素ID、XPath、CSS选择器无需模拟鼠标内置等待机制、页面切换、弹窗处理等Web自动化核心能力。安装命令pipinstallselenium# 需搭配对应浏览器驱动如ChromeDriver2.3 PyWinAutoWindows专用Windows GUI控件操作核心特点仅支持Windows系统直接操控Windows应用的原生控件按钮、输入框等无需模拟鼠标通过控件名称/类名精准定位稳定性远高于模拟输入支持MS Office、浏览器、自研Windows应用等。安装命令pipinstallpywinauto2.4 OpenCV/Pillow图像识别辅助工具核心特点OpenCV高性能模板匹配支持复杂场景下的元素定位Pillow轻量级屏幕截图、像素处理配合PyAutoGUI实现图像定位适用于无控件标识、仅靠视觉识别的老旧应用/游戏界面。安装命令pipinstallopencv-python pillow三、基础操作实现3.1 鼠标控制PyAutoGUIimportpyautoguiimporttime# 设置操作间隔防操作过快pyautogui.PAUSE0.5# 获取屏幕分辨率screen_width,screen_heightpyautogui.size()# 1. 鼠标移动从当前位置移到(100, 200)耗时1秒模拟真实移动pyautogui.moveTo(100,200,duration1)# 2. 鼠标点击左键单击pyautogui.click(100,200)# 右键单击pyautogui.rightClick(100,200)# 双击pyautogui.doubleClick(100,200)# 3. 鼠标拖拽从(100,200)拖到(300,400)pyautogui.dragTo(300,400,duration0.8)# 4. 滚轮滚动向上滚动5格正数向上负数向下pyautogui.scroll(5,x100,y200)3.2 键盘输入PyAutoGUIimportpyautogui# 1. 输入文本支持中文需确保输入法为英文/系统默认pyautogui.typewrite(Python自动化界面操作,interval0.1)# interval为每个字符输入间隔# 2. 按下/释放单个按键pyautogui.keyDown(shift)# 按住shiftpyautogui.keyUp(shift)# 释放shift# 3. 快捷键组合CtrlC复制pyautogui.hotkey(ctrl,c)# 快捷键CtrlV粘贴pyautogui.hotkey(ctrl,v)# 4. 特殊按键输入回车、空格等pyautogui.press(enter)# 回车pyautogui.press(space)# 空格pyautogui.press(tab)# 制表符3.3 屏幕截图与图像定位3.3.1 基础截图Pillow PyAutoGUIimportpyautoguifromPILimportImage# 1. 全屏截图并保存screenshotpyautogui.screenshot()screenshot.save(full_screen.png)# 2. 区域截图x1, y1, 宽度, 高度region_screenshotpyautogui.screenshot(region(0,0,500,500))region_screenshot.save(region_screen.png)# 3. 获取指定坐标的像素颜色pixel_colorpyautogui.pixel(100,200)print(f坐标(100,200)的像素颜色{pixel_color})3.3.2 图像定位模板匹配importpyautoguiimportcv2importnumpyasnp# 1. 加载目标模板图片需提前截取要定位的元素templatecv2.imread(button.png,0)# 2. 加载屏幕截图screencv2.imread(full_screen.png,0)# 3. 模板匹配resultcv2.matchTemplate(screen,template,cv2.TM_CCOEFF_NORMED)# 获取匹配度最高的位置min_val,max_val,min_loc,max_loccv2.minMaxLoc(result)# 匹配度阈值需根据实际调整threshold0.8ifmax_valthreshold:# 计算目标元素中心坐标h,wtemplate.shape center_xmax_loc[0]w//2center_ymax_loc[1]h//2print(f目标元素位置({center_x},{center_y}))# 点击目标元素pyautogui.click(center_x,center_y)else:print(未找到目标元素)四、高级应用场景4.1 自动化登录与表单填写Seleniumfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECimporttime# 初始化浏览器Chromedriverwebdriver.Chrome()# 隐式等待全局等待元素加载最长10秒driver.implicitly_wait(10)# 打开登录页面driver.get(https://example.com/login)try:# 1. 定位用户名输入框并输入username_inputdriver.find_element(By.ID,username)username_input.clear()# 清空原有内容username_input.send_keys(test_user)# 2. 定位密码输入框并输入password_inputdriver.find_element(By.ID,password)password_input.clear()password_input.send_keys(test_password)# 3. 点击登录按钮显式等待等待按钮可点击login_buttonWebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID,login-btn)))login_button.click()# 4. 登录成功后填写表单driver.get(https://example.com/form)# 输入文本框driver.find_element(By.NAME,name).send_keys(张三)# 选择下拉框fromselenium.webdriver.support.uiimportSelect selectSelect(driver.find_element(By.NAME,gender))select.select_by_value(male)# 点击提交按钮driver.find_element(By.ID,submit-btn).click()print(表单填写并提交成功)exceptExceptionase:print(f操作失败{e})finally:# 延迟5秒后关闭浏览器time.sleep(5)driver.quit()4.2 定时任务与循环操作importpyautoguiimporttimeimportschedule# 定义要执行的自动化任务defauto_operation():print(f开始执行定时任务{time.ctime()})# 示例打开记事本并输入内容# 1. 打开记事本Windowspyautogui.hotkey(win,r)# 打开运行窗口pyautogui.typewrite(notepad,interval0.1)pyautogui.press(enter)time.sleep(1)# 等待记事本打开# 2. 循环输入10行文本foriinrange(10):pyautogui.typewrite(f第{i1}行自动化测试内容)pyautogui.press(enter)print(定时任务执行完成)# 设置定时任务每天10:00执行schedule.every().day.at(10:00).do(auto_operation)# 保持程序运行whileTrue:schedule.run_pending()time.sleep(1)4.3 异常处理弹窗拦截、超时重试importpyautoguiimporttimefromselenium.common.exceptionsimportTimeoutException,NoSuchElementException# 重试装饰器失败后重试3次defretry(max_retries3,delay2):defdecorator(func):defwrapper(*args,**kwargs):retries0whileretriesmax_retries:try:returnfunc(*args,**kwargs)exceptExceptionase:retries1print(f操作失败{retries}/{max_retries}{e}{delay}秒后重试)time.sleep(delay)raiseException(f重试{max_retries}次后仍失败)returnwrapperreturndecorator# 处理弹窗示例defhandle_popup():# 检测弹窗是否存在通过图像定位try:popup_pospyautogui.locateOnScreen(popup_close.png,confidence0.8)ifpopup_pos:# 点击弹窗关闭按钮pyautogui.click(pyautogui.center(popup_pos))print(弹窗已关闭)except:print(无弹窗需要处理)# 带重试的Web操作retry(max_retries3,delay2)defweb_operation():fromseleniumimportwebdriver driverwebdriver.Chrome()driver.implicitly_wait(5)driver.get(https://example.com)# 先处理可能的弹窗handle_popup()# 定位元素超时则触发重试elementdriver.find_element(By.ID,target-element)element.click()driver.quit()# 执行操作if__name____main__:try:web_operation()exceptExceptionase:print(f最终执行失败{e})五、实战案例案例1自动化批量上传文件Seleniumfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByimportosimporttime# 初始化浏览器driverwebdriver.Chrome()driver.maximize_window()driver.get(https://example.com/upload)# 待上传文件列表file_paths[rC:\files\file1.txt,rC:\files\file2.jpg,rC:\files\file3.pdf]try:# 定位文件上传输入框typefileupload_inputdriver.find_element(By.ID,file-upload)forfile_pathinfile_paths:# 检查文件是否存在ifnotos.path.exists(file_path):print(f文件不存在{file_path})continue# 上传文件Selenium直接输入文件路径无需模拟点击upload_input.send_keys(file_path)time.sleep(1)# 等待文件上传# 点击上传按钮driver.find_element(By.ID,upload-btn).click()# 等待上传完成根据页面提示判断success_msgWebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CLASS_NAME,upload-success)))print(f文件{file_path}上传成功)# 重置上传输入框upload_inputdriver.find_element(By.ID,file-upload)exceptExceptionase:print(f批量上传失败{e})finally:time.sleep(3)driver.quit()案例2桌面应用数据抓取PyWinAuto OCRfrompywinautoimportApplicationimportpyautoguiimporttimeimportpytesseractfromPILimportImage# 配置Tesseract OCR路径需提前安装pytesseract.pytesseract.tesseract_cmdrC:\Program Files\Tesseract-OCR\tesseract.exe# 1. 启动Windows桌面应用以记事本为例appApplication(backenduia).start(notepad.exe)time.sleep(1)# 连接应用窗口notepadapp.Notepad notepad.maximize()# 2. 定位输入框并输入测试内容notepad.Edit.type_keys(姓名张三\n年龄25\n手机号13800138000,with_spacesTrue)# 3. 截图并识别文本OCR# 定位编辑区域坐标edit_rectnotepad.Edit.rectangle()x1,y1,x2,y2edit_rect.left,edit_rect.top,edit_rect.right,edit_rect.bottom# 区域截图screenshotpyautogui.screenshot(region(x1,y1,x2-x1,y2-y1))screenshot.save(app_content.png)# 4. OCR识别文本textpytesseract.image_to_string(Image.open(app_content.png),langchi_sim)print(识别到的应用内容)print(text)# 5. 提取关键信息linestext.strip().split(\n)data{}forlineinlines:ifinline:key,valueline.split(,1)data[key]valueprint(提取的关键数据,data)# 6. 关闭应用notepad.close()六、性能优化与调试技巧6.1 操作延迟设置importpyautoguifromseleniumimportwebdriver# 1. PyAutoGUI全局延迟所有操作后等待0.5秒pyautogui.PAUSE0.5# 防误操作鼠标移到屏幕角落如左上角时暂停所有操作pyautogui.FAILSAFETrue# 2. Selenium隐式/显式等待避免硬编码sleepdriverwebdriver.Chrome()# 隐式等待全局等待元素加载driver.implicitly_wait(10)# 显式等待针对特定元素等待fromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC elementWebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,target)))6.2 日志记录与错误排查importloggingimportpyautogui# 配置日志logging.basicConfig(levellogging.INFO,format%(asctime)s - %(levelname)s - %(message)s,filenameauto_operation.log,filemodea)# 封装操作函数记录日志defsafe_click(x,y):try:logging.info(f尝试点击坐标({x},{y}))pyautogui.click(x,y)logging.info(f点击成功({x},{y}))exceptExceptionase:logging.error(f点击失败{e})raise# 调用示例safe_click(100,200)6.3 多线程/异步处理提升效率importthreadingimportpyautogui# 定义子线程任务deftask1():print(线程1处理A应用操作)# 模拟A应用操作pyautogui.hotkey(win,r)pyautogui.typewrite(notepad)pyautogui.press(enter)deftask2():print(线程2处理B应用操作)# 模拟B应用操作pyautogui.hotkey(ctrl,shift,esc)# 打开任务管理器# 创建并启动线程t1threading.Thread(targettask1)t2threading.Thread(targettask2)t1.start()t2.start()# 等待线程完成t1.join()t2.join()print(所有任务执行完成)七、常见问题与解决方案7.1 分辨率适配问题问题现象解决方案不同分辨率下坐标错位1. 相对坐标替代绝对坐标如基于窗口比例计算2. 图像定位替代固定坐标3. 先获取窗口位置再计算相对坐标高DPI屏幕元素缩放异常Windows下设置应用“高DPI缩放替代”兼容性选项PyAutoGUI启用pyautogui.useImageNotFoundException()7.2 动态元素定位失败问题现象解决方案Web元素ID/位置动态变化1. 使用XPath/CSS相对定位如//div[contains(class, btn)]2. 显式等待元素加载3. 父元素定位子元素桌面应用控件名称变化1. 使用控件类名/类型定位如PyWinAuto的child_window(class_nameEdit)2. 图像识别兜底7.3 权限与安全限制绕过问题现象解决方案系统权限不足如无法操作管理员窗口以管理员身份运行Python脚本PyWinAuto使用run_as_admin启动应用反爬/反自动化检测1. 增加随机延迟random.uniform(0.5, 2)2. 模拟人类操作轨迹PyAutoGUI的moveTo加duration3. 更换用户代理Selenium输入法拦截输入1. 切换为英文输入法后输入2. 使用剪贴板粘贴pyautogui.hotkey(ctrl, v)八、扩展方向8.1 结合RPA框架UiPath/Automation AnywherePython脚本可作为RPA流程的自定义活动补充复杂逻辑处理RPA for Pythonrpaframework轻量级开源RPA框架整合PyAutoGUI、Selenium等能力支持流程可视化编排。8.2 移动端自动化Appium跨平台移动端自动化框架兼容Android/iOSAPI与Selenium类似可复用Web自动化经验AirTest网易开源移动端自动化工具结合图像识别控件定位适合游戏/APP自动化。8.3 无头浏览器应用fromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptions# 配置Chrome无头模式无界面运行chrome_optionsOptions()chrome_options.add_argument(--headlessnew)# 新版无头模式chrome_options.add_argument(--disable-gpu)chrome_options.add_argument(--window-size1920,1080)# 启动无头浏览器driverwebdriver.Chrome(optionschrome_options)driver.get(https://example.com)print(页面标题,driver.title)driver.quit()九、参考资料与学习资源9.1 官方文档PyAutoGUIhttps://pyautogui.readthedocs.io/Seleniumhttps://www.selenium.dev/documentation/PyWinAutohttps://pywinauto.readthedocs.io/OpenCVhttps://docs.opencv.org/9.2 开源项目推荐PyAutoGUI Exampleshttps://github.com/asweigart/pyautogui/tree/master/examplesSelenium Python Exampleshttps://github.com/SeleniumHQ/selenium/tree/trunk/py/test/functionalAirTesthttps://github.com/AirtestProject/Airtest9.3 社区论坛与QA平台Stack Overflow关键词Python PyAutoGUI、Selenium PythonCSDN、掘金Python自动化专栏知乎Python自动化操作相关话题。总结Python自动化界面操作是解决重复性界面任务的高效手段核心在于根据场景选择合适的工具Web界面优先选Selenium精准控件定位Windows桌面应用优先选PyWinAuto原生控件操作通用跨平台场景选PyAutoGUI模拟输入无控件场景选OpenCV图像识别。

相关文章:

Python自动化界面操作:从基础到实战全攻略

一、自动化界面操作概述 1.1 定义 Python自动化界面操作是指通过代码模拟人工的鼠标、键盘操作,或直接调用界面控件API,实现对桌面应用、Web页面、移动端APP等图形界面的自动化控制,无需人工干预即可完成重复性任务。 1.2 常见应用场景场景类…...

Pytest 核心特性与技术优势

Pytest 核心特性与技术优势 核心特性详解 语法极简设计 测试用例仅需以 test_ 前缀命名函数或方法,无需继承任何基类。例如: def test_addition():assert 1 1 2智能用例发现 自动扫描项目目录下匹配 test_*.py 或 *_test.py 模式的文件,支持…...

Windows NTFS硬链接技术深度解析:EternalBlaze如何实现磁盘空间零成本释放

在Windows操作系统中,NTFS文件系统提供了一项被大多数用户忽视的强大功能——硬链接(Hard Link)。 这项技术允许单个文件在文件系统中拥有多个路径引用,而所有引用均指向同一份物理数据块。 EternalBlaze正是基于这一底层机制开…...

crewAI 部署形态:本地、Docker、K8s 与 Serverless 化实践

crewAI 部署形态:本地、Docker、K8s 与 Serverless 化实践 本文基于 crewAI v1.11.0,全面覆盖从本地开发到企业级部署的完整实践方案。 一、部署复杂度的阶梯 crewAI 项目的部署需求随规模增长呈阶梯式上升: Stage 1:本地开发└…...

crewAI 可观测性体系:Langfuse/Phoenix 集成与执行链路追踪

crewAI 可观测性体系:Langfuse/Phoenix 集成与执行链路追踪 本文基于 crewAI v1.11.0,介绍如何为多智能体系统建立完整的可观测性基础设施。 一、为什么多智能体系统需要可观测性 一个 crewAI Crew 在生产环境中运行时,你关心哪些问题&#…...

crewAI CLI 与项目结构:从原型到生产的工程化规范

crewAI CLI 与项目结构:从原型到生产的工程化规范 本文基于 crewAI v1.11.0,系统介绍 crewAI 项目的标准工程结构、CLI 工具链和生产环境配置规范。 一、原型与生产的鸿沟 很多 crewAI 项目都死在从原型到生产的过渡阶段。原型阶段的代码通常是这样的&a…...

一、安装Redis(win11环境下)

1.windows安装Redis 1.1下载redis https://github.com/tporadowski/redis/releases 图1-1 网页Redis版本选择 1.2解压redis 图1-2 redis目录下 1.3启动redis 在解压成功后,进入到redis文件下(如上图1-2),右键打开命令窗口&am…...

Comsol声子晶体能带计算,包含六角晶格不同原胞的选取以及简约布里渊区高对称点选择

Comsol声子晶体能带计算,包含六角晶格不同原胞的选取以及简约布里渊区高对称点选择。 核心在于区分三角晶格和六角晶格区别最近在研究Comsol声子晶体的能带计算,发现六角晶格的原胞选取和简约布里渊区高对称点的选择真是个大坑。尤其是三角晶格和六角晶格…...

从Tacotron到智能语音:端到端语音合成的原理、应用与未来

从Tacotron到智能语音:端到端语音合成的原理、应用与未来 引言 你是否曾好奇智能音箱里流畅自然的语音是如何“凭空”产生的?这背后,端到端语音合成技术正扮演着核心角色。本文将深入解析这一领域的里程碑式模型——Tacotron。我们将从其颠覆…...

保姆级教程:手把手复现攻防世界shrine靶场(Flask+Jinja2 SSTI)

从零构建Flask SSTI靶场:绕过黑名单获取FLAG的实战指南 第一次接触CTF中的SSTI漏洞时,我完全被那些奇怪的{{}}符号和魔术方法搞晕了。直到亲手搭建环境复现漏洞,才真正理解模板注入的精妙之处。本文将带你从零开始,完整复现攻防世…...

Arduino Uno引脚全解析:从电源管理到PWM调光,新手必看的实战指南

Arduino Uno引脚深度实战:从电源配置到智能控制的全能指南 当你第一次拿起Arduino Uno开发板时,那些密密麻麻的金属引脚可能会让你感到困惑。这块小小的蓝色板子如何通过这些引脚与外部世界对话?本文将带你超越简单的引脚定义,深入…...

基于Docker和Orthanc构建高效医学影像存储系统的实践指南

1. 为什么选择DockerOrthanc搭建医学影像系统 在医院信息化建设中,医学影像存储一直是个让人头疼的问题。传统的PACS系统往往价格昂贵、部署复杂,而且扩展性差。我去年帮一家社区医院做系统升级时,他们原有的影像系统已经用了8年,…...

NXP i.MX8M Plus Cortex-M7多核通信与实时控制开发实战

1. 认识i.MX8M Plus的异构多核架构 第一次拿到NXP i.MX8M Plus开发板时,最让我惊讶的是它独特的"大小核"设计。这颗芯片内部其实藏着两个完全不同的世界:一边是四核Cortex-A53组成的"大脑",主频高达1.6GHz,能…...

计算机毕设 java基于微信小程序点餐系统的设计与实现 微信小程序智能点餐平台开发 基于 SpringBoot 的餐饮在线点餐系统设计

计算机毕设 java基于微信小程序点餐系统的设计与实现pmz399(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享随着移动互联网的普及和微信小程序的广泛应用,“互联网 餐饮” 成为行业…...

LeetCode 48 1886.矩阵旋转与判断

LeetCode 48 & 1886.矩阵旋转与判断 题目概览 [LeetCode 48] 旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像,请你将图像顺时针旋转 90 度,必须原地旋转。 [LeetCode 1886] 判断矩阵经轮转后是否一致 给定两个 n n 的矩阵 mat 和 target&a…...

Comsol纳米摩擦发电机仿真计算模型探索

Comsol纳米摩擦发电机仿真计算模型,采用静电场对相反电极材料感应的表面电荷进行计算,可以得到不同电极距离下计算模型的电势、电场分布最近在研究Comsol纳米摩擦发电机仿真计算模型,感觉还挺有意思的,来和大家分享一下&#x1f6…...

计算机毕设 java 燐燐开花二手交易系统 Java 二手商品在线交易与管理平台开发 基于 SpringBoot 的二手交易商城系统实现

计算机毕设 java 燐燐开花二手交易系统 7rvj49(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享在互联网与共享经济的双重推动下,二手商品交易需求日益旺盛,但传统二手交…...

CAD二次开发实战:5分钟搞定TXT坐标转DWG图纸(C#代码详解)

CAD二次开发实战:5分钟实现TXT坐标转DWG图纸(C#代码精解) 在工程设计领域,数据格式转换是高频需求。许多传统测绘设备输出的坐标数据仍以TXT文本形式保存,而设计人员需要将这些数据可视化到DWG图纸中。手动输入不仅效率…...

vue+python人工智能AI问答时代个人计算机的安全防护科普系统

目录技术栈选择系统架构设计核心功能实现数据安全策略部署与测试用户教育内容持续维护计划项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术栈选择 前端采用Vue 3框架,结合Element UI或Ant Design Vue组件库实现…...

腾讯云GPU实例上,用Isaac Sim 5.0和Isaac Lab搭建GR00T仿真环境,保姆级避坑指南

腾讯云GPU实例部署Isaac Sim 5.0全流程:从零搭建到稳定运行的深度实践 当我在腾讯云上第一次尝试部署Isaac Sim 5.0时,本以为按照官方文档就能轻松搞定,结果却遭遇了VNC黑屏、快捷键失效、密码重置卡住等一系列问题。这篇文章将分享我在腾讯云…...

保姆级教程:从下载到配置,手把手搞定CANoe车载测试环境(附CAN盒选购指南)

从零搭建CANoe车载测试环境:避坑指南与实战配置 第一次打开CANoe软件时,那个复杂的界面和密密麻麻的选项让我完全不知所措。作为汽车电子领域最主流的测试工具,CANoe的强大功能背后是陡峭的学习曲线。本文将分享我三年来从零开始搭建测试环境…...

vue+python产品售后服务跟踪系统的设计与实现6ffp13w7

目录系统架构设计功能模块划分技术实现细节数据库设计开发计划部署方案项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用前后端分离架构,前端使用Vue.js框架构建用户界面,后端使用Pytho…...

华为无线网络部署实战:基于RADIUS认证的企业级WLAN配置指南

1. 企业级WLAN部署的核心挑战 在中大型企业无线网络部署中,最头疼的问题莫过于如何平衡安全性和用户体验。我见过太多企业为了图省事直接使用预共享密钥(PSK)认证,结果要么因为密码泄露导致网络被蹭,要么每次有员工离职…...

Python实战:用中智集解决模糊决策问题(附完整代码)

Python实战:用中智集解决模糊决策问题(附完整代码) 在数据科学和机器学习领域,决策问题往往伴随着不确定性。传统的模糊集理论已经无法完全满足复杂场景下的需求,这时中智集(Neutrosophic Set)作…...

银监会G01报表填报避坑指南:最新251版与231版差异全解析

G01报表251版与231版差异解析:银行填报人员必知的12个关键点 每当季度报表报送季来临,银行填报人员总会面临版本更新带来的困扰。G01《资产负债项目统计表》作为银监会1104报表体系中最核心的报表之一,其251版与231版之间的差异直接影响着数据…...

实验室旧服务器(Ubuntu 18)无网环境,如何用Ollama+DeepSeek R1搭建本地AI助手(附Open WebUI白屏解决方案)

在Ubuntu 18无网环境中部署Ollama与DeepSeek R1的完整指南 老旧服务器往往面临系统版本过时、网络隔离等现实约束,但这并不妨碍我们挖掘其剩余价值。本文将手把手带您完成Ubuntu 18系统下的离线AI助手部署,重点解决无网环境带来的特殊挑战。 1. 环境准备…...

永磁同步电机PMSM参数辨识与SVPWM矢量控制仿真探索

永磁同步电机PMSM参数辨识svpwm矢量控制 初试速度恒定 Matlab/simulink仿真(2018a及以上版本),最近在搞永磁同步电机(PMSM)相关的研究,涉及到参数辨识以及SVPWM矢量控制,并且初试速度恒定,用的是Matlab/Sim…...

双向Buck-Boost变换器:电压外环与电流内环控制的平均电流管理技术,实现模式切换无过压过...

双向buck-boost变换器, 采用电压外环, 电流内环控制, 平均电流控制。 在buck模式与boost模式之前切换时,不会发生过压与过流。 该拓补可以用于储能中。双向buck-boost变换器最近在储能领域火得不行,这玩意儿既能当充电…...

从CMT2300A实战出发:Sub1G射频匹配电路设计要点与315MHz应用详解

1. CMT2300A芯片与Sub1G射频基础认知 第一次拿到CMT2300A这颗国产Sub1G射频芯片时,最吸引我的是它127MHz到1020MHz的超宽工作频段。这意味着一颗芯片就能覆盖智能家居、工业遥控等场景常用的315MHz/433MHz/868MHz等多个频点。不过实际调试中发现,射频匹配…...

Comsol 中光子晶体仿真:拓扑荷、偏振态及相关特性探索

comsol光子晶体仿真,拓扑荷,偏振态。 三维能带,三维Q,Q因子计算。 远场偏振计算。在光子晶体领域的研究中,Comsol 是一款极为强大的工具,它能帮助我们深入探究各种复杂的光学现象,今天咱们就聊聊…...