classification
Title: webbrowser regression on windows
Type: behavior Stage: test needed
Components: Library (Lib), Windows Versions: Python 2.7
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: brian.curtin, ezio.melotti, georg.brandl, techtonik, terry.reedy
Priority: normal Keywords:

Created on 2010-06-08 03:46 by techtonik, last changed 2013-02-25 05:28 by terry.reedy. This issue is now closed.

Messages (7)
msg107297 - (view) Author: anatoly techtonik (techtonik) Date: 2010-06-08 03:46
webbrowser.open("127.0.0.1:8080") opens page in IE even if default system browser is Chrome.
msg107299 - (view) Author: Brian Curtin (brian.curtin) * (Python committer) Date: 2010-06-08 03:53
See also #8232
msg107300 - (view) Author: Brian Curtin (brian.curtin) * (Python committer) Date: 2010-06-08 03:54
Also, since you stated that this is a regression -- what was the last version you saw this work in?
msg107301 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2010-06-08 03:55
If you want it to open it with the default browser you have to specify the protocol (e.g. webbrowser.open("http://127.0.0.1:8080/")).
I don't know exactly why webbrowser decides to open webbrowser.open("127.0.0.1:8080") with IE, but the behavior seems consistent in all the versions, so it's not a regression.
msg107305 - (view) Author: anatoly techtonik (techtonik) Date: 2010-06-08 05:40
2.5 threw exception
msg107306 - (view) Author: anatoly techtonik (techtonik) Date: 2010-06-08 06:25
webbrowser.open("%s:%s" % (HOST,PORT))
  File "C:\Python25\lib\webbrowser.py", line 61, in open
    if browser.open(url, new, autoraise):
  File "C:\Python25\lib\webbrowser.py", line 518, in open
    os.startfile(url)
WindowsError: [Error -2147217406] Windows Error 0x80041002: '127.0.0.1:8080'


I do not mind if new Python would handle this exception correctly, but it doesn't launching wrong browser. If I specify "http://" prefix - the Chrome launched as expected. Note that if "127.0.0.1:8080" is executed from shell (search menu or run dialog) - IE is not started by Vista.
msg182917 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2013-02-25 05:28
The regression issue is red herring. An issue should propose new behavior (based on an understanding of the doc and actual current behavior). Then ask: "Is the proposed behavior better than the current behavior?", and "Is the current behavior a bug?". After reading the doc and the code, I am convinced that current behavior is close to the implied wanted behavior, and that it is not a bug.

The doc says
 webbrowser.open(url, new=0, autoraise=True)
    Display url using the default browser.

What does 'default browswer' mean? Near the top, the doc says "If the environment variable BROWSER exists, it is interpreted to override the platform default list of browsers,". So the 'default browser' is actually the 'default browser list'. What open() does is to try each in turn and stop when one says it succeeded. So the doc should say 'using the first default browser that claims to succeed.'

What does 'default browser list' mean? It depends on the platform *and* the software loaded on the particular machine when webbrowser is first imported in a particular instance of the interpreter. The 'platform' part is in the quote above, the rest is not. I will open a separate doc issue.

On Windows, the list starts with 'default Windows browser', which calls os.startfile(), which, I believe, does call the user default browser. Next is Internet Explorer -- if available at that time on the particular machine! If the user-default browser rejects the url, then IE is tried.

On my win7 machine today, I have Firefox the default and IE available. Firefox rejects 127.0.0.1:8080 with an 'Unable to connect' error box. IE 'accepts' it in the sense that it displays an information starting 'The webpage cannot be displayed'. For 'invalid.xxx', IE displays the page for a German domain registrar. I strongly suspect that the change Anatoly saw was a difference in IE, out of Python's control.

Georg, if you think I got it wrong, please correct.
History
Date User Action Args
2013-02-25 05:28:25terry.reedysetstatus: open -> closed

nosy: + terry.reedy
messages: + msg182917

resolution: not a bug
2010-06-08 06:25:20techtoniksetmessages: + msg107306
2010-06-08 05:40:12techtoniksetmessages: + msg107305
2010-06-08 03:55:57ezio.melottisetnosy: + georg.brandl, ezio.melotti
messages: + msg107301
2010-06-08 03:54:25brian.curtinsetmessages: + msg107300
2010-06-08 03:53:38brian.curtinsetversions: - Python 2.6
nosy: + brian.curtin

messages: + msg107299

type: behavior
stage: test needed
2010-06-08 03:46:40techtonikcreate