最近在用一个以Selenium为基础的工具做自动测试,遇到一个问题。
自动测试失败后的浏览器会一直开着,这样长时间运行后,会出现很多浏览器都被打开,资源占用很高,机器性能变得很差,进而导致更多的失败。
解决方案:
关闭每个失败的浏览器
但因为我无法修改工具里面失败部分的处理代码,所以需要单独写一个监控Chrome进程的程序,一旦发现有两个Chrome浏览器打开,就关闭先打开的那个Chrome浏览器。
令人郁闷的是
1 打开一个Chrome的时候,任务管理器里面会出现多个Chrome的进程,不知道要关哪个才好
2 不知道怎么才能得到进程的打开时间
经过Google,Baidu一大圈之,排除使用Java,批处理等之后,发现Windows Power Shell脚本可以拿到进程的打开时间,可以关闭进程,总之可以关闭先打开的那个Chrome。
Shell在Win8上默认可以运行,
但需要修改权限:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
修改脚本存放的目录: Set-Location C:\Scripts
脚本:
Clear-Host
while(1 -eq 1)
{
$ProcessCount = (Get-Process | Where-Object {$_.Name -eq "chrome" -and $_.HandleCount -gt 500} | Sort-Object StartTime -errorAction SilentlyContinue).Count
if($ProcessCount -gt 1)
{
$ProcessID = (Get-Process | Where-Object {$_.Name -eq "chrome" -and $_.HandleCount -gt 500} | Sort-Object StartTime -errorAction SilentlyContinue | Select-Object -first 1 ).Id
Write-Host $ProcessID
stop-process -id $ProcessID
start-sleep -m 500
}
}