beginsql
beginsql

Reputation: 135

Two chrome windows and unexpected quit after running selenium chromedriver

I have 3 files in my project: main.py, g_webdriver.py, and whatever.py. They look like this:

main.py:

import g_webdriver
import whatever

g_webdriver.run_chrome('https://stackoverflow.com')

g_webdriver.py:

from selenium import webdriver

driver = webdriver.Chrome()

def run_chrome(url:str):
    driver.get(url)
    driver.maximize_window()

whatever.py:

from selenium import webdriver

driver = webdriver.Chrome()

If I run my main.py file, selenium opens two separate chrome windows: one with loaded stackoveflow website and one blank with data:, in url bar. Of course I want open only one window. How to fix this? Also I must mention that I tried to get rid of driver variable and open my chrome directly by webdriver.Chrome() but this approach doesn't work either because it opens two separate windows (one with loaded page and one blank) like in the first one and after a few seconds closing comes.

Upvotes: 0

Views: 327

Answers (1)

RafalS
RafalS

Reputation: 6324

When you run main, python imports g_webdriver and executes all code from that file including the line:

driver = webdriver.Chrome()

That's when the first window is opened.

Then python imports whatever and again runs driver = webdriver.Chrome(), so you get another separate window. webdriver.Chrome() always creates a new window.

At this point 2 windows are opened with blank pages and you open stackoverflow in g_webdriver.driver.

You could extract opening Chrome window to another file and import the one shared driver to both files:

chrome_window.py:

from selenium import webdriver

driver = webdriver.Chrome()

g_webdriver.py:

from selenium import webdriver
from chrome_window import driver

def run_chrome(url:str):
    driver.get(url)
    driver.maximize_window()

whatever.py:

from chrome_window import driver

Upvotes: 1

Related Questions