Автоматически закрывайте firefox через 10 минут после его открытия (для предотвращения зависания макроса) - PullRequest
1 голос
/ 11 мая 2019

Я использую firefox 60 Quantum с Kantu (проект Selenium Ide) с 32-битной Windows 7, и мне нужно решение, чтобы закрыть его после 10 минут бездействия firefox.

Я запускаю с Firefox больше макросов один за другим, но иногда макрос может быть застрял, а Firefox остается открытым и не выполняет команду макроса.

В этом случае мне нужно принудительно закрыть firefox.

Я уже думал о решении задачи, но это создает для меня проблему, потому что он должен запускаться только в том случае, если процесс firefox был открыт с 10 минут, в противном случае он также закрыл бы firefox при запуске макроса, который регулярно работает.

Пример: я запускаю 4 макроса один за другим.

  • Макрос 1 запускается в течение 7 минут после окончания работы, закрывает Firefox и запускает макрос 2

  • Макрос 2 запускается в течение 6 минут после окончания работы, закрывает Firefox и запускает макрос 3

  • Макрос 3 запускается в течение 9 минут после окончания работы, закрывает Firefox и запускает макрос 4

  • Макрос 4 запускается в течение 10 минут, а отдых застрял / завис, после 10 минут с открытым замораживанным firefox мне нужно принудительно закрыться только для этого макроса, поскольку он не может продолжаться с последующими командами.

Если я использую taskkill, когда открываю firefox, он может закрывать firefox во время обычного выполнения макросов без зависаний (первые 3 макроса работали в течение 17 минут, и только макрос 4 работает в течение 10 минут, а остальные зависли).

Существует решение для использования taskkill с ckeck - время выполнения процесса в диспетчере задач (например, firefox.exe, если запуск из 10 минут будет закрыт или подобное решение?)

Я искал аддоны, чтобы закрыть все вкладки в Firefox через 10 минут, но в моем случае не работает, потому что закрываются только вкладки без фокуса и застрявший макрос не работают, но имеют фокус.

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Я считаю, что это решение, которое контролирует, как долго процесс открылся, и закрывает его, если он был открыт в течение нескольких минут, пока он не закрывает процессы, открытые в течение более коротких периодов.

https://stackoverflow.com/a/14390012/11268278

0 голосов
/ 11 мая 2019

Я не уверен, полностью ли я понял вопрос, но вы смотрели на командную строку kantu ?

Вы можете использовать ее, чтобы написать скрипт, который ждет 10 минут изатем убивает браузер и / или Kantu.

Вы найдете несколько примеров кода для различных языков в kantu github repo .

Все эти сценарии проверяют наличиефайл журнала должен быть записан в течение определенного времени ожидания .И если файл журнала не появляется, скрипт убивает Канту.Кажется, это именно то, что вам нужно:

#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   
}
...