python - 如何让selenium关闭最后一个标签且不退出浏览器
阿神
阿神 2017-04-18 09:52:01
0
2
495

问题背景:

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

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

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

所以问题就是:

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

阿神
阿神

闭关修行中......

répondre à tous (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页面的快捷键达到你的目的
    左手右手慢动作

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

      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!