python 结束进程 terminate_python – 如果已存在浏览器窗口,则process.terminate()不适用于chrome / firefox子进程...

这不是python问题,并且您的代码不包含错误.这是浏览器的问题.使用–new-window启动firefox或chrome的可执行文件时,将在浏览器的现有实例中打开一个新窗口.

换句话说,您刚刚开始的进程连接到现有的firefox / chrome进程,并指示该进程打开一个新窗口然后终止.所以当你调用terminate()时,没有什么真正发生,因为你开始的过程已经结束了.

你可以用几行代码来检查:

>>> import subprocess

>>> p = subprocess.Popen(['firefox', '-new-window'])

>>> p.wait() # uh-oh. this should be blocking!

0

>>> p.terminate()

Traceback (most recent call last):

File "", line 1, in

File "/usr/lib/python2.7/subprocess.py", line 1551, in terminate

self.send_signal(signal.SIGTERM)

File "/usr/lib/python2.7/subprocess.py", line 1546, in send_signal

os.kill(self.pid, sig)

OSError: [Errno 3] No such process

您应该告诉浏览器打开一个新实例而不是一个新窗口. Firefox有一个-new-instance选项,即使在尝试使用它时,我唯一得到的是弹出窗口显示我无法打开浏览器的两个实例.是否允许在某个OS会话中打开多个浏览器实例取决于浏览器,可能无法实现.

在Chrome上,我相信您可以打开一个新会话,告诉Chrome使用其他目录存储其数据(例如,请参阅here).不知道这是否可行 在Firefox中.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值