如何使用cmd / Python关闭Internet选项卡?

时间:2015-03-21 19:06:08

标签: python python-2.7 cmd

所以我正在编写一个Python脚本来使用cmd打开Internet链接。例如:

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中的Internet选项卡吗?

注意:我使用 Windows 8 Python 2.7.9 Google Chrome

4 个答案:

答案 0 :(得分:7)

您可以启动进程,然后在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

如果你想打开一个带有三个标签的浏览器然后关闭我会使用selenium或类似的东西:

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()

chromedriverselenium

答案 1 :(得分:1)

Chrome获得了自己的流程和资源管理。 新chrome.exe <url>的生命周期很短。新的chrome进程进行通信并将新的选项卡请求传递给另一个chrome进程并立即退出。因此,新PID的{​​{1}}无关紧要,杀死它将不会关闭新打开的标签(如兄弟答案所示)。

但是,您可以使用此天真替代方案:

  1. 打开chrome.exe
  2. 等待60秒
  3. 关闭所有chrome.exe <url>进程
  4. 例如:

    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) 个实例

答案 2 :(得分: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')

答案 3 :(得分:0)

您可以简单地使用键盘快捷键:

import keyboard

# here goes your code... 

keyboard.press_and_release('ctrl+w') # closes the last tab

这只会关闭最后一个标签,而不是全部(或从最后一个开始,尽可能多地关闭)