我正在编写一个使用Chrome Devtools协议的python脚本(我正在使用Python无封面PyChromeDevTools无头Chrome,但我需要运行一个Chrome实例。我希望脚本能够启动无头的Chrome实例,在开始时,并在最后关闭它。
我试过这个:
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)
这似乎有效(如果我导航到localhost:7912我看到无头Chrome已启动并且有一个用https://www.youtube.com打开的标签以及一个工作者pid(当我杀死python进程时它会消失)。但是python脚本只是挂在那里,它不会继续运行脚本的其余部分。
如何启动无头Chrome以便脚本继续运行。另外,当我完成它后,我怎么能杀掉这个过程呢?
(如果我运行相同的脚本,但不要求Chrome无头,脚本会按预期继续)。
答案 0 :(得分:2)
你需要p = subprocess.Popen(chrome_args)
。与subprocess.call
不同,它不会等待生成的进程终止,而只是在后台运行它。但是,请注意,如果您的脚本完成,Chrome也可能会被杀死。因此,您可以等待Chrome以p.wait
终止或停止脚本,例如input()
。