问题描述:
- 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 True
else:
try:
# 需要启动Hwork
from pywinauto.application import Application
# 启动
Application(backend='uia').start(path)
time.sleep(15)
# 发送Alt+F4快捷键, 关闭窗口,关闭前台
pyautogui.hotkey('alt', 'f4')
return True
except :
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自动化可能需要多种工具混合使用, 才能方便解决一个问题, 故而把== 解决问题, 放在首位,== 然后才是 优化框架, 技术方案选择.