我国网站开发,怎样用wordpress做网站,聚财洋气三个字公司名字,建设asp网站视频教程一、前置说明
在自动化过程中#xff0c;经常需要在命令行中执行一些操作#xff0c;比如启动应用、查杀应用等#xff0c;因此可以封装成一个CommandExecutor来专门处理这些事情。
二、操作步骤
# cmd_util.pyimport logging
import os
import platform
import shutil
i…一、前置说明
在自动化过程中经常需要在命令行中执行一些操作比如启动应用、查杀应用等因此可以封装成一个CommandExecutor来专门处理这些事情。
二、操作步骤
# cmd_util.pyimport logging
import os
import platform
import shutil
import subprocessimport psutillogger logging.getLogger(__name__)class CommandExecutor:staticmethoddef execute_command(command):subprocess.run() 方法用于执行命令并等待其完成然后返回一个 CompletedProcess 对象该对象包含执行结果的属性。它适用于需要等待命令完成并获取结果的情况。try:result subprocess.run(command, shellTrue, capture_outputTrue, textTrue)if result.returncode 0:return result.stdout.strip()else:return result.stderr.strip()except Exception as e:return str(e)classmethoddef kill_processes_with_name(cls, name):查杀窗口名称包含 name 的所有进程支持模拟匹配try:if platform.system() Windows:# Windows系统使用tasklist和findstr命令来获取包含特定字符串的窗口进程列表command ftasklist /V /FO CSV | findstr /C:{name}output cls.execute_command(command)if output:# 遍历输出的进程列表for line in output.splitlines():# 解析进程信息process_info line.split(,)process_name process_info[0].strip()process_id process_info[1].strip()# 先尝试关父进程解决关掉uiautomatorview或appium server 之后, 会留下一个无用的cmd的窗口try:# 获取父进程parent_process psutil.Process(int(process_id)).parent()# 终止父进程CMD窗口kill_parent_command ftaskkill /F /T /PID {parent_process.pid}cls.execute_command(kill_parent_command)except:pass# 如果没有父进程则直接关闭子进程如果父进程已关闭子进程会消失也try catch 一下try:# 终止进程kill_command ftaskkill /F /T /PID {process_id}cls.execute_command(kill_command)# 记录日志logger.info(fStopped process {process_name} with ID {process_id})except:passelse:logger.info(fNo processes found with window name containing {name})else:# 其他操作系统使用wmctrl命令获取包含特定字符串的窗口列表command fwmctrl -l | grep {name}window_list cls.execute_command(command)if window_list:# 遍历输出的窗口列表for line in window_list.splitlines():# 解析窗口信息window_info line.split()window_id window_info[0]# 关闭窗口os.system(fwmctrl -ic {window_id})# 记录日志logger.info(fStopped processes with window name containing {name})else:logger.info(fNo processes found with window name containing {name})except Exception as e:logger.warning(fError: {str(e)})cmd_executor CommandExecutor()
cmd cmd_executor
三、Demo验证
以关闭多开的两个夜神模拟器来测试代码顺利关闭
if __name__ __main__:import logginglogging.basicConfig(levellogging.DEBUG)print(cmd.kill_processes_with_name(夜神))欢迎技术交流