2016-08-21 3 views
2

Я пытаюсь сделать интернет-радио, основанное на открытии и закрытии веб-браузера, чтобы запустить и остановить радио, но я почему-то не могу закрыть браузер, используя разные методы.Закрытие браузера с помощью python

Я уже пробовал использовать подпроцесс .

import subprocess as sp 
web = sp.Popen("epiphany http://www.google.com", shell=True) 

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

web.kill() 

ни с

web.terminate() 

Он просто ничего не делали.

Я также пробовал использовать метод selenium, но поскольку я пытаюсь сделать это на малине pi, так что единственный браузер - это прозрение, которое не поддерживается, и я не мог получить другой поддерживаемый браузер для установки.

Модуль веб-браузер в Python, кажется, не имеют какой-либо функции закрытия

Есть ли способ, что я мог закрыть браузер?

+5

Возможный дубликат из [Как закончить подпроцесс python, запущенный с оболочкой = True] (http://stackoverflow.com/questions/4789837/how-to-terminate-a-python-subprocess-launched-with-shell-true) – taras

+0

Почему Вы используете Селен? –

+0

@GeorgePetrov, как я уже сказал, я делаю это на малине pi 3, и я не мог получить браузер для установки, поэтому я должен использовать epiphany (легкий браузер для pi), но он не поддерживается селеном, если я не получил концепцию все неправильный – mateuszdrwal

ответ

0

после выполнения ALOT исследований я обнаружил, что я мог бы убить браузер, набрав

pkill epiphany 

в терминал, так что я просто использовал этот код, чтобы закрыть его в Python:

import os 
os.system("pkill epiphany") 
0

Похоже, вы хотите закрыть только что открывшийся браузер. Если предположить, что у вас есть только один экземпляр Богоявления открытым, вы можете использовать

sp.Popen("killall epiphany") 

Который будет убить всех экземпляр прозрения. Если у вас есть несколько экземпляров, вам нужно будет получить идентификатор запущенного прозрения, которое вы хотите убить.

sp.Popen("epiphany http://www.google.com & export PID=$!", shell=True) 
# Do Stuff Here With Epiphany 
sp.Popen("kill -9 $PID") 

Это должно открыть новый экземпляр эпифана на www.google.com и сохранить PID в переменных среды. Затем вы можете получить значение PID с помощью $ PID и убить процесс браузера.

+0

это почему-то не сработало для меня. оба метода поднимают child_exception с причиной «нет такого файла или каталога», я также заметил, что если я делаю «echo $ PID», в то время как epiphany работает со вторым методом, он ничего не возвращает, но im не уверен, должен ли он – mateuszdrwal

Смежные вопросы