问题背景:
写了一个小脚本,监听redis中是否有url,如果有链接则调用FireFox打开这个网页进行一系列操作,操作完成之后则继续监听。
目前的方法是操作完之后直接driver.quit(),然后监听到新的url时则重新启动,这样带来一个问题就是浏览器的启停非常消耗时间。
我尝试操作完成之后用driver.close()来关闭页面,但是发现没办法关掉最后的那一个,而且如果这个时候driver.get(url)会报错。
所以问题就是:
如何打开一个浏览器,当有新任务进来之后就打开窗口操作,操作完毕之后关闭所有窗口但不退出浏览器,等待下一个任务。
Firefox打开tab和关闭tab的快捷键分别为:
Ctrl+t
Ctrl+w
下面有一段实例代码演示如何使用ActionChain来使用操作快捷键:
我担心楼上这样做存在稳定风险...当然我没测试过..
#*#).比如在服务器上搭建一个空白页面的地址,selenium启动后第一个打开的页面就是这个提供一个思路你看可行否
设置一个空白页面(当然也可以加一点特殊标识,比如
然后它一直被保留.
他实际所处的位置就是handles[0]
然后你在执行你的脚本.
打开,执行完东西close()就行了..正常情况下会一直保留这个空白页面
如果更健壮一点,就写一个获取当前窗口句柄再加上判断
如果driver.find_element_by_css_selector("body").text == "#*#"
return 返回一个你想返回的
否则继续driver.close()
直到满足上一个条件...