Webbrowser Not Opening New Windows
Solution 1:
I don't have Chrome installed, but there seem to be multiple problems:
- According to the docs,
webbrowser.get
expects the name of the browser, not the path. - You should save the return value of
webbrowser.get()
and use it to open the remaining urls.
import webbrowser
URLS = ("first page", "second page", "third page")
browser= webbrowser.get('chrome')
first=Truefor url in URLS:
if first:
browser.open_new(url)
first=Falseelse:
browser.open_new_tab(url)
Solution 2:
May be too late, but probably will help others.
As per the docs, you should try with new=1
webbrowser.open(url, new=0, autoraise=True)
Display url using the default browser. If new is 0, the url is opened in the same browser window if possible. If new is 1, a new browser window is opened if possible. If new is 2, a new browser page (“tab”) is opened if possible. If autoraise is True, the window is raised if possible (note that under many window managers this will occur regardless of the setting of this variable).
Doc link: Webbrowser docs
Solution 3:
I ran into a similar issue. I just used os.system() to open a new instance of chrome. Also I registered the chrome.exe as a new browser using:
#register the browser
chrome_path ="C:\\Users\\cj9250\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"
webbrowser.register('chrome', None,webbrowser.BackgroundBrowser(chrome_path),1)
There is guidance in other posts on using .get to call the path to chrome. Despite trying this method and many other different methods, I just could not get chrome to open a new window and session.
Finally I came to os.system to open a new instance of chrome. So for your code it would look like this:
import webbrowser
import os #use for new instance of chrome#urls I want to open in array
URLS = (
"first page",
"second page",
"third page"
)
#register the browser
chrome_path = "YOUR PATH TO CHROME\\chrome.exe"#note the double \ syntax
webbrowser.register('chrome', None,webbrowser.BackgroundBrowser(chrome_path),1)
#open new instance of chrome
os.system(r'YOUR PATH TO CHROME\chrome.exe')
#open each urlfor url in URLS:
webbrowser.get('chrome').open(url)
Looking at what you're trying to do, I think that Selenium would be much better suited. I too use a web application daily for work, and I took the time to run through some Selenium tutorials. It has been much simpler for automation.
Solution 4:
The solution is much simpler. Assuming that you have standard path ubication for chrome.exe (and your OS is windows), this is the solution (it opens a new chrome window even if you already had one previously opened). subprocess
instead of os.system
is mandatory bc otherwise it doesn't open a new chrome window if had one already opened. regards
import subprocess
urL ='https://www.google.com'
chrome_path ="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
child = subprocess.Popen(chrome_path, shell=True)
Solution 5:
This was done on a Windows machine.
I was facing basically the same issue; not being able to open a new browsing window and only being able to open new tabs.
Here's a workaround that allowed me to open a new browsing window (in Chrome) with an initial URL and then open subsequent URLs in that window as tabs.
import webbrowser
import subprocess
# Set this appropriately depending on your situation
chrome_path = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
first_url = 'https://www.google.com/'# This should open a NEW WINDOW with the URL specified above
command = f"cmd /C \"{chrome_path}\" {first_url} --new-window"# Alternative way that achieves the same result# command = f"cmd /C start chrome {first_url} --new-window"
subprocess.Popen(command)
new_tab_urls = [
'https://www.python.org/',
'https://hackernoon.com/30-jokes-only-programmers-will-get-a901e1cea549'
]
for url in new_tab_urls:
webbrowser.open_new_tab(url)
Post a Comment for "Webbrowser Not Opening New Windows"