34

I have a python script that scraps data off from a website on an hourly basis. It is stored on the server at the moment and is working well as I am using task scheduler to schedule it to execute the script on an hourly basis.

I am using this code

driver.quit()

to quit the browser window

My problem to this that whenever I am not logging in to the server, it will start stacking up the webdriver window as somehow the driver.quit() function does not work when I am logging into the server. every morning when I came to work, I have tons of window to close from the server.

I tried to quit, close, dispose, but it doesn't help. What else I can try?

Nikolay Fominyh
  • 8,946
  • 8
  • 66
  • 102
Kok chuan Lim
  • 343
  • 1
  • 4
  • 4

6 Answers6

47

In python using chromedriver, I quit Chrome processes with:

driver.close()
jeanhuguesroy
  • 583
  • 5
  • 11
16

For Python and chromedriver I've found these two methods useful (mind the difference):

driver.close() - closes the browser active window.

driver.quit() - closes all browser windows and ends driver's session/process.

tommystarlit
  • 161
  • 1
  • 4
3

For anyone still finding this question relevant in 2021 (heck it is for me!).

For me driver.quit() definitely was the right method. The main issue was tests not being cleaned up properly, meaning driver.quit() was never called.

  • Make sure you run cleanup steps regardless of if the test crashes. e.g. in unittest use the tearDown or tearDownClass methods (setup the driver in setUp.
  • If you can't do that wrap whatever you're doing with the driver object in a try / catch and do the driver.quit() in the finally block.
OllyTheNinja
  • 566
  • 3
  • 16
2

Could'nt you scrape in headless mode? (example for chrome)

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.headless = True
...
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.create_options()
Marc Steffen
  • 113
  • 1
  • 7
  • 3
    Yes, but you still need to close. I'm actually here because I just realized this - I have scripts running headless firefox and the headless processes stay open, innocently loitering at first and eventually tanking your system under the oppressive weight of their legion. – Kyle Alm Oct 01 '20 at 09:57
  • Yes, true, but difficult to see what's wrong without his code. – Marc Steffen Nov 22 '20 at 20:45
0

I use linux command to close all. Here're two commands I ran after all scraping job is done:

  • pkill firefox
  • pkill Xcfb
-4

I think webDriver.Dispose() should work, It closes all browser windows. Here is a SO post about the 3 different ways to close a webdriver.

Community
  • 1
  • 1
Pike D.
  • 671
  • 2
  • 11
  • 30