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

Windows自动化3️⃣WindowsPC拽起时长问题解决方案

问题描述:

  1. Windows应用从点击, 到加载完成, 需要一定的时间
  2. 后台是否已经启动过当前程序?
  3. 启动后, 前后台应用关闭问题等

我的解决思路:
首先检查进程 , 当前进程是否在运行, 如果进程在运行, 需要先关闭进程
关闭进程后, 开始我们的自动化流程, 去拽起 应用
拽起应用后, 可以先前台关闭当前应用, 方便后面运行我们的自动化流程

import psutil# 获取当前windows , 所有进程信息名称, 并去重
def get_all_process():list_process = set()# 获取当前windows , 所有进程信息for proc in psutil.process_iter(['pid', 'name']):list_process.add(proc.info["name"])return list_process
# 后台是否有Hwork.exe , 如果没有就需要 启动Hwork,会比较耗时, 如果有就不需要
def hwork_start(path):all_process = get_all_process()if "Hwork.exe" in all_process:return Trueelse:try:# 需要启动Hworkfrom pywinauto.application import Application# 启动Application(backend='uia').start(path)time.sleep(15)# 发送Alt+F4快捷键, 关闭窗口,关闭前台pyautogui.hotkey('alt', 'f4')return Trueexcept :return False

不同于web自动化, PC自动化scope为方法级别

@pytest.fixture(scope="function", autouse=True)
def pc_start():# 添加启动参数desired_caps = {}desired_caps['app'] = r"D:\Users\duxiaowei\AppData\Local\Programs\Hwork\Hwork.exe"#if hwork_start(desired_caps['app']):# 客户端连接 Server,启动 Session 会话driver = webdriver.Remote(command_executor='http://127.0.0.1:4723', desired_capabilities=desired_caps)# 默认全局隐式等待设置driver.implicitly_wait(20)# 设置启动检查等待,等待搜索errors = [NoSuchElementException, ElementNotInteractableException, ElementNotVisibleException]wait = WebDriverWait(driver, timeout=100, poll_frequency=2, ignored_exceptions=errors)wait.until(EC.visibility_of(driver.find_element(by=By.NAME, value="搜索")))# 强制等待time.sleep(2)else:print("请检查-Hwork程序是否启动成功!")return driver

PC自动化解决问题思路: 不同于web自动化, PC自动化可能需要多种工具混合使用, 才能方便解决一个问题, 故而把== 解决问题, 放在首位,== 然后才是 优化框架, 技术方案选择.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java学习Day30:Mysql 第三章:玄阶高级斗技:八极崩!
  • 查券机器人如何提升电商返利系统的用户体验
  • Visual C++ 2010 学习版
  • Selenium实战:深度解析Python中嵌套Frame与iFrame的定位与切换技巧,解决Selenium定位不到的问题
  • 掌握Jenkins自动化部署:从代码提交到自动上线的全流程揭秘
  • 国内服务器安装Docker提示Failed to connect to download.docker.com port 443的解决方案
  • 使用 Hugging Face 和 Milvus 构建 RAG 系统
  • 机器学习——第十二章计算学习理论
  • 笔记(day21) 多线程以及锁的概念(超级完整版)
  • ASPICE标准与汽车网络安全:协同确保软件质量与系统安全
  • pycharm windows/mac 指定多版本python
  • 思科OSPF动态路由配置8
  • 《Ubuntu22.04环境下的ROS2学习笔记2》
  • 【数学建模】趣味数学模型——等额还款数学模型
  • 【精选】基于Python大型购物商城系统(京东购物商城,淘宝购物商城,拼多多购物商城爬虫系统)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Fundebug计费标准解释:事件数是如何定义的?
  • input实现文字超出省略号功能
  • JSDuck 与 AngularJS 融合技巧
  • PHP的类修饰符与访问修饰符
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Tornado学习笔记(1)
  • vue-router 实现分析
  • 对象管理器(defineProperty)学习笔记
  • 数据结构java版之冒泡排序及优化
  • 算法---两个栈实现一个队列
  • 听说你叫Java(二)–Servlet请求
  • 微信公众号开发小记——5.python微信红包
  • 带你开发类似Pokemon Go的AR游戏
  • 如何用纯 CSS 创作一个货车 loader
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​马来语翻译中文去哪比较好?
  • #100天计划# 2013年9月29日
  • #window11设置系统变量#
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $.ajax中的eval及dataType
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4)logging(日志模块)
  • (SpringBoot)第二章:Spring创建和使用
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (备份) esp32 GPIO
  • (十)Flink Table API 和 SQL 基本概念
  • (学习日记)2024.01.19
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .cfg\.dat\.mak(持续补充)
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .Net Core 笔试1
  • .net core 连接数据库,通过数据库生成Modell
  • .net core 依赖注入的基本用发
  • .NET 材料检测系统崩溃分析