2015-03-21 2 views
4

Итак, я пишу скрипт Python для открытия интернет-ссылок с помощью cmd. Например:Как закрыть вкладку в Интернете с помощью cmd/Python?

import os 
os.system('start http://stackoverflow.com/') 
os.system('start http://www.google.com/') 
os.system('start http://www.facebook.com/') 

После того как я открыть их я:

import time 
time.sleep(60) 

Так что я могу подождать минуту, прежде чем делать что-нибудь еще. То, что я не могу найти, - это способ закрыть эти вкладки после того, как я открыл их в течение 60 секунд? Есть ли команда, которую я могу использовать для закрытия вкладок Интернета в cmd?

Примечание: Я использую Windows 8, Python 2.7.9 и Google Chrome

ответ

5

Вы можете запускать процессы, а затем убить их через 60 секунд.

from subprocess import Popen, check_call 

p1 = Popen('start http://stackoverflow.com/') 
p2 = Popen('start http://www.google.com/') 
p3 = Popen('start http://www.facebook.com/') 

time.sleep(60) 
for pid in [p1.pid,p2.pid,p3.pid]: 
    check_call(['taskkill', '/F', '/T', '/PID', str(pid)]) 

replacing-os-system

Если вы хотите, чтобы открыть браузер с тремя вкладками, то близко, что я хотел бы использовать селен или что-то подобное:

import time 
from selenium import webdriver 


dr = webdriver.Chrome() 

dr.get('http://stackoverflow.com/') 
dr.execute_script("$(window.open('http://www.google.com/'))") 
dr.execute_script("$(window.open('http://facebook.com/'))") 

time.sleep(5) 
dr.close() 
dr.switch_to.window(dr.window_handles[-1]) 
dr.close() 
dr.switch_to.window(dr.window_handles[-1]) 
dr.close() 

chromedriver, selenium

+0

использование 'p1 = Popen ('начать http://stackoverflow.com/',shell=True)', чтобы преодолеть эту –

+0

@logic, похоже, убивая процессы на окнах не прямо вперед, я буду редактировать –

+0

@logic, попробуйте отредактировать –

1

Chrome получил свою собственную процесса и управления ресурсами. Жизненный цикл нового chrome.exe <url> короткий. новый процесс chrome связывается и передает новый запрос табуляции другому процессу chrome и немедленно выходит. поэтому PID нового chrome.exe не имеет значения и убивает, он не собирается закрывать вновь открытые вкладки (как указано в ответе брата).

Однако, Вы можете использовать эту Наивное альтернативу:

  1. открытый chrome.exe <url>
  2. подождите 60 секунд
  3. закрыть все chrome.exe процессы

, например:

from subprocess import Popen 
import time 

urls = ['http://www.facebook.com/', 'http://www.google.com/'] 

for url in urls: 
    Popen(['start', 'chrome' , url], shell=True) 

time.sleep(60) 

Popen('taskkill /F /IM chrome.exe', shell=True) 

Примечание - он закроет все ваши chrome экземпляров

+1

извините, я неправильно понял ваш первый комментарий :) вы правы, это может упрощается до одной строки. только что –

0
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

browser = webdriver.Firefox() 
browser.get('http://stackoverflow.com') 
main_window = browser.current_window_handle 

Открыть новую вкладку

browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 
browser.get('http://stackoverflow.com/questions/tagged/django') 

Подождите 10 секунд и закройте новую вкладку.

time.sleep(10) 

Закрыть Новая вкладка. Первая вкладка остается открытой.

browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'w') 
Смежные вопросы