我将Firefox 60 Quantum与带有Windows 7 32位的Kantu(一个Selenium Ide项目)一起使用,并且我需要一种在闲置了10分钟的firefox之后关闭的解决方案。
我一个又一个地运行着更多的firefox宏,但是有时宏可以停滞不前,并且Firefox保持打开状态,并且不执行宏命令。
在这种情况下,我需要强制关闭Firefox。
我已经想到了taskkill的解决方案,但是它给我带来了一个问题,因为它仅在从10分钟开始打开Firefox进程时才运行,否则运行正常工作的宏时也会关闭Firefox。 / p>
示例我一个接一个地运行4个宏。
宏1在完成工作后运行7分钟,它将关闭Firefox并运行宏2
宏2在完成工作后运行6分钟,它将关闭Firefox并运行宏3
宏3在完成工作后运行9分钟,它将关闭Firefox并运行宏4
Macro 4运行了10分钟,卡住/冻结了,在打开Firefox 10分钟后冻结了,我需要强行关闭该宏,因为它无法继续执行后续命令。
如果我在打开firefox时使用taskkill,则可以在正常执行的宏过程中关闭firefox,而不会卡死宏(前3个宏工作17分钟,只有4个宏工作10分钟,其余冻结)。
在任务管理器中存在一个可以在执行任务时使用taskkill的解决方案(例如,如果从10分钟开始运行,firefox.exe将被关闭,或者类似的解决方案?)
我搜索了插件,以在10分钟后关闭Firefox中的所有标签页,但在我的情况下却无法正常工作,因为仅关闭没有焦点的标签页且宏被卡住无法正常工作,而是具有焦点。
答案 0 :(得分:1)
我发现这是一种解决方案,可以控制进程打开了多长时间,如果进程已打开了几分钟则将其关闭,而不会关闭较短时间内打开的进程。
答案 1 :(得分:0)
我不确定我是否完全理解这个问题,但是您看过kantu command line吗?
您可以使用它编写一个脚本,等待10分钟,然后杀死浏览器和/或Kantu。
您可以在kantu github repo中找到一些用于各种语言的代码示例。
这些脚本全部check for the log file to be written within a certain timeout value。如果未显示日志文件,则脚本将杀死kantu。听起来这就是您所需要的:
#Macro done - or timeout exceeded:
if ($status_runtime -lt $timeout_seconds)
{
#Read FIRST line of log file, which contains the status of the last run
$status_text = Get-Content $path_log -First 1
#Check if macro completed OK or not
$status_int = -1
If ($status_text -contains "Status=OK") {$status_int = 1}
}
else
{
$status_text = "Macro did not complete within the time given:" + $timeout_seconds
$status_int = -2
Cleanup => Kill Chrome instance
taskkill /F /IM chrome.exe /T
}