get_process_id() из библиотеки Process() робота. "Нет активного процесса"

Я пытаюсь использовать библиотеку фреймворка робота Process() для запуска и отслеживания процессов. https://robot-framework.readthedocs.io/en/v3.0.3/_modules/robot/libraries/Process.html

После запуска процесса я не могу использовать метод get_process_id(). Я написал простой пример, используя notepad.exe ниже

path = "C:\\WINDOWS\\system32"
Process().start_process('notepad.exe',shell=False, cwd=path)
var = Process().get_process_id()
BuiltIn().log_to_console(var)

Это дает мне ошибку "Нет активного процесса".

В качестве альтернативы, используя ручки, как описано в документации

path = "C:\\WINDOWS\\system32"
handle = Process().start_process('notepad.exe',shell=False,cwd=path)
var = Process().get_process_id(handle)
BuiltIn().log_to_console(var)

Я получаю сообщение об ошибке "Несуществующий индекс или псевдоним 1".

1 ответ

Решение

Когда вы делаете Process().get_process_id()вы создаете новый экземпляр библиотеки. Этот экземпляр не знает ни о каких процессах, запущенных предыдущим экземпляром библиотеки.

Вам нужно получить один экземпляр библиотеки и использовать его последовательно.

processLib = Process()
processLib.start_process(...)
var = processLib.get_process_id()

Лучше всего попытаться получить ссылку на существующую библиотеку процессов, используя BuiltIn().get_library_instanceи только создать новый, если он не существует.

Другие вопросы по тегам