Windows自动化3️⃣WindowsPC拽起时长问题解决方案
问题描述:
- Windows应用从点击, 到加载完成, 需要一定的时间
- 后台是否已经启动过当前程序?
- 启动后, 前后台应用关闭问题等
我的解决思路:
首先检查进程 , 当前进程是否在运行, 如果进程在运行, 需要先关闭进程
关闭进程后, 开始我们的自动化流程, 去拽起 应用
拽起应用后, 可以先前台关闭当前应用, 方便后面运行我们的自动化流程
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自动化可能需要多种工具混合使用, 才能方便解决一个问题, 故而把== 解决问题, 放在首位,== 然后才是 优化框架, 技术方案选择.