所以我正在编写一个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
答案 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)])
如果你想打开一个带有三个标签的浏览器然后关闭我会使用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()
答案 1 :(得分:1)
Chrome获得了自己的流程和资源管理。
新chrome.exe <url>
的生命周期很短。新的chrome
进程进行通信并将新的选项卡请求传递给另一个chrome
进程并立即退出。因此,新PID
的{{1}}无关紧要,杀死它将不会关闭新打开的标签(如兄弟答案所示)。
但是,您可以使用此天真替代方案:
chrome.exe
chrome.exe <url>
进程例如:
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')
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
这只会关闭最后一个标签,而不是全部(或从最后一个开始,尽可能多地关闭)