2017-12-21 24 views
1

Chrome Devtools 프로토콜을 사용하는 Python 스크립트를 작성하고 있습니다. Python wraper PyChromeDevTools 헤드리스 크롬을 사용하고 있지만 이미 실행중인 Chrome 인스턴스가 있어야합니다. . beggining에, 머리가없는 크롬 인스턴스를 시작하고 끝을 닫습니다열기/닫기 Python으로 헤드리스 크롬

을 나는 시도했다이 : 7912 난 그 헤드리스 (headless)를 참조 : 이것은 로컬 호스트로 이동하는 경우 (작동하는 것 같다

import subprocess 
CHROME_PATH=r'C:\Program Files (x86)\Google\Chrome\Application\chrome' 

chrome_args=[CHROME_PATH, 
      '--headless', 
      '--disable-gpu', 
      '--remote-debugging-port=7912', 
      r'https://www.youtube.com/',] 

cmd=r" ".join(chrome_args) 

subprocess.call(cmd) 

크롬이 시작되었고 https://www.youtube.com으로 열리는 탭과 작업자 PID (내가 pyt를 죽이면 사라집니다. hon 프로세스). 하지만 python 스크립트가 멈추고 나머지 스크립트는 계속 실행되지 않습니다.

헤드리스 크롬을 시작하여 스크립트를 계속하려면 어떻게해야합니까? 또한이 프로세스를 마치면이 프로세스를 어떻게 죽일 수 있습니까?

(동일한 스크립트를 실행했지만 Chrome이 헤드리스가 아닌지 묻는다면 스크립트는 예상대로 계속됩니다).

답변

2

p = subprocess.Popen(chrome_args)이 필요합니다. subprocess.call과 달리 생성 된 프로세스가 종료 될 때까지 기다리지 않고 백그라운드에서 실행합니다. 그러나 스크립트가 끝나면 Chrome도 종료 될 수 있습니다. 따라서 Chrome이 p.wait으로 종료 될 때까지 기다리거나 예를 들어 스크립트를 중지 할 수 있습니다. input().

+0

감사합니다. 나이를 알아 내려고 노력했습니다. 그런 간단한 해결책이있었습니다. 감사 :) – Tim