素材牛VIP会员
如何让selenium关闭最后一个标签且不退出浏览器
 阿***斤  分类:Python  人气:1129  回帖:2  发布于6年前 收藏

问题背景:

写了一个小脚本,监听redis中是否有url,如果有链接则调用FireFox打开这个网页进行一系列操作,操作完成之后则继续监听。

目前的方法是操作完之后直接driver.quit(),然后监听到新的url时则重新启动,这样带来一个问题就是浏览器的启停非常消耗时间。

我尝试操作完成之后用driver.close()来关闭页面,但是发现没办法关掉最后的那一个,而且如果这个时候driver.get(url)会报错。

所以问题就是:

如何打开一个浏览器,当有新任务进来之后就打开窗口操作,操作完毕之后关闭所有窗口但不退出浏览器,等待下一个任务。

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv3 码奴
凤***奇 职业无 6年前#1

我担心楼上这样做存在稳定风险...当然我没测试过..
提供一个思路你看可行否
设置一个空白页面(当然也可以加一点特殊标识,比如<body>#*#</body>).比如在服务器上搭建一个空白页面的地址,selenium启动后第一个打开的页面就是这个
然后它一直被保留.
他实际所处的位置就是handles[0]
然后你在执行你的脚本.
打开,执行完东西close()就行了..正常情况下会一直保留这个空白页面
如果更健壮一点,就写一个获取当前窗口句柄再加上判断
如果driver.find_element_by_css_selector("body").text == "#*#"
return 返回一个你想返回的
否则继续driver.close()
直到满足上一个条件...

Lv7 码师
un***oo 职业无 6年前#2

Firefox打开tab和关闭tab的快捷键分别为:

  • Ctrl+t

  • Ctrl+w

下面有一段实例代码演示如何使用ActionChain来使用操作快捷键:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

# launch our web driver and get a page
browser = webdriver.Firefox()
browser.get("http://www.google.com/")

# try to open a new tab
ActionChains(browser).key_down(Keys.CONTROL).send_keys("t").key_up(Keys.CONTROL).perform()
# 你可以自行添加关闭tab页面的快捷键达到你的目的
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取