首页 > 解决方案 > 使用多线程时关闭所有带有 selenium 的浏览器

问题描述

我正在用硒进行网页抓取。我正在使用多线程库。我的脚本同时打开 3 个 firefox 浏览器并进行抓取。完成抓取后,我想关闭所有浏览器,我尝试了很多方法,但 Browser.quit() 和 browser.close() 关闭 1 个浏览器,其他 2 个浏览器不关闭。

def get_links():
   some code here...
def get_driver():
   global driver
   driver = getattr(threadLocal, 'driver', None)
   if driver is None:
       chromeOptions = webdriver.ChromeOptions()
       chromeOptions.add_argument("--headless")
       driver = webdriver.Firefox(executable_path)
       setattr(threadLocal, 'driver', driver)
return driver

def get_title(thisdict):
   import datetime
   driver = get_driver()
   driver.get(thisdict["url"])
   time.sleep(5)
   driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")

if __name__ == '__main__':
   ThreadPool(3).map(get_title, get_links())
   driver.close()  #or driver.quit()

标签: pythonmultithreadingseleniumfirefoxbrowser

解决方案


您必须使用该self.selenium.stop()功能。基本quit()调用driver.dispose方法依次关闭所有浏览器窗口。close()关闭设置焦点的浏览器窗口。


推荐阅读