Reputation: 135
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
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