17db96d56Sopenharmony_ci:mod:`webbrowser` --- Convenient web-browser controller 27db96d56Sopenharmony_ci======================================================= 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: webbrowser 57db96d56Sopenharmony_ci :synopsis: Easy-to-use controller for web browsers. 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci.. moduleauthor:: Fred L. Drake, Jr. <fdrake@acm.org> 87db96d56Sopenharmony_ci.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org> 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci**Source code:** :source:`Lib/webbrowser.py` 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci-------------- 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ciThe :mod:`webbrowser` module provides a high-level interface to allow displaying 157db96d56Sopenharmony_ciweb-based documents to users. Under most circumstances, simply calling the 167db96d56Sopenharmony_ci:func:`.open` function from this module will do the right thing. 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ciUnder Unix, graphical browsers are preferred under X11, but text-mode browsers 197db96d56Sopenharmony_ciwill be used if graphical browsers are not available or an X11 display isn't 207db96d56Sopenharmony_ciavailable. If text-mode browsers are used, the calling process will block until 217db96d56Sopenharmony_cithe user exits the browser. 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ciIf the environment variable :envvar:`BROWSER` exists, it is interpreted as the 247db96d56Sopenharmony_ci:data:`os.pathsep`-separated list of browsers to try ahead of the platform 257db96d56Sopenharmony_cidefaults. When the value of a list part contains the string ``%s``, then it is 267db96d56Sopenharmony_ciinterpreted as a literal browser command line to be used with the argument URL 277db96d56Sopenharmony_cisubstituted for ``%s``; if the part does not contain ``%s``, it is simply 287db96d56Sopenharmony_ciinterpreted as the name of the browser to launch. [1]_ 297db96d56Sopenharmony_ci 307db96d56Sopenharmony_ciFor non-Unix platforms, or when a remote browser is available on Unix, the 317db96d56Sopenharmony_cicontrolling process will not wait for the user to finish with the browser, but 327db96d56Sopenharmony_ciallow the remote browser to maintain its own windows on the display. If remote 337db96d56Sopenharmony_cibrowsers are not available on Unix, the controlling process will launch a new 347db96d56Sopenharmony_cibrowser and wait. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ciThe script :program:`webbrowser` can be used as a command-line interface for the 377db96d56Sopenharmony_cimodule. It accepts a URL as the argument. It accepts the following optional 387db96d56Sopenharmony_ciparameters: ``-n`` opens the URL in a new browser window, if possible; 397db96d56Sopenharmony_ci``-t`` opens the URL in a new browser page ("tab"). The options are, 407db96d56Sopenharmony_cinaturally, mutually exclusive. Usage example:: 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci python -m webbrowser -t "https://www.python.org" 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci.. include:: ../includes/wasm-notavail.rst 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ciThe following exception is defined: 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci.. exception:: Error 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci Exception raised when a browser control error occurs. 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ciThe following functions are defined: 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci.. function:: open(url, new=0, autoraise=True) 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci Display *url* using the default browser. If *new* is 0, the *url* is opened 597db96d56Sopenharmony_ci in the same browser window if possible. If *new* is 1, a new browser window 607db96d56Sopenharmony_ci is opened if possible. If *new* is 2, a new browser page ("tab") is opened 617db96d56Sopenharmony_ci if possible. If *autoraise* is ``True``, the window is raised if possible 627db96d56Sopenharmony_ci (note that under many window managers this will occur regardless of the 637db96d56Sopenharmony_ci setting of this variable). 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci Note that on some platforms, trying to open a filename using this function, 667db96d56Sopenharmony_ci may work and start the operating system's associated program. However, this 677db96d56Sopenharmony_ci is neither supported nor portable. 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci .. audit-event:: webbrowser.open url webbrowser.open 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci.. function:: open_new(url) 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci Open *url* in a new window of the default browser, if possible, otherwise, open 757db96d56Sopenharmony_ci *url* in the only browser window. 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci.. function:: open_new_tab(url) 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci Open *url* in a new page ("tab") of the default browser, if possible, otherwise 807db96d56Sopenharmony_ci equivalent to :func:`open_new`. 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci.. function:: get(using=None) 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ci Return a controller object for the browser type *using*. If *using* is 867db96d56Sopenharmony_ci ``None``, return a controller for a default browser appropriate to the 877db96d56Sopenharmony_ci caller's environment. 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci.. function:: register(name, constructor, instance=None, *, preferred=False) 917db96d56Sopenharmony_ci 927db96d56Sopenharmony_ci Register the browser type *name*. Once a browser type is registered, the 937db96d56Sopenharmony_ci :func:`get` function can return a controller for that browser type. If 947db96d56Sopenharmony_ci *instance* is not provided, or is ``None``, *constructor* will be called without 957db96d56Sopenharmony_ci parameters to create an instance when needed. If *instance* is provided, 967db96d56Sopenharmony_ci *constructor* will never be called, and may be ``None``. 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci Setting *preferred* to ``True`` makes this browser a preferred result for 997db96d56Sopenharmony_ci a :func:`get` call with no argument. Otherwise, this entry point is only 1007db96d56Sopenharmony_ci useful if you plan to either set the :envvar:`BROWSER` variable or call 1017db96d56Sopenharmony_ci :func:`get` with a nonempty argument matching the name of a handler you 1027db96d56Sopenharmony_ci declare. 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci .. versionchanged:: 3.7 1057db96d56Sopenharmony_ci *preferred* keyword-only parameter was added. 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ciA number of browser types are predefined. This table gives the type names that 1087db96d56Sopenharmony_cimay be passed to the :func:`get` function and the corresponding instantiations 1097db96d56Sopenharmony_cifor the controller classes, all defined in this module. 1107db96d56Sopenharmony_ci 1117db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1127db96d56Sopenharmony_ci| Type Name | Class Name | Notes | 1137db96d56Sopenharmony_ci+========================+=========================================+=======+ 1147db96d56Sopenharmony_ci| ``'mozilla'`` | :class:`Mozilla('mozilla')` | | 1157db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1167db96d56Sopenharmony_ci| ``'firefox'`` | :class:`Mozilla('mozilla')` | | 1177db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1187db96d56Sopenharmony_ci| ``'netscape'`` | :class:`Mozilla('netscape')` | | 1197db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1207db96d56Sopenharmony_ci| ``'galeon'`` | :class:`Galeon('galeon')` | | 1217db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1227db96d56Sopenharmony_ci| ``'epiphany'`` | :class:`Galeon('epiphany')` | | 1237db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1247db96d56Sopenharmony_ci| ``'skipstone'`` | :class:`BackgroundBrowser('skipstone')` | | 1257db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1267db96d56Sopenharmony_ci| ``'kfmclient'`` | :class:`Konqueror()` | \(1) | 1277db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1287db96d56Sopenharmony_ci| ``'konqueror'`` | :class:`Konqueror()` | \(1) | 1297db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1307db96d56Sopenharmony_ci| ``'kfm'`` | :class:`Konqueror()` | \(1) | 1317db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1327db96d56Sopenharmony_ci| ``'mosaic'`` | :class:`BackgroundBrowser('mosaic')` | | 1337db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1347db96d56Sopenharmony_ci| ``'opera'`` | :class:`Opera()` | | 1357db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1367db96d56Sopenharmony_ci| ``'grail'`` | :class:`Grail()` | | 1377db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1387db96d56Sopenharmony_ci| ``'links'`` | :class:`GenericBrowser('links')` | | 1397db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1407db96d56Sopenharmony_ci| ``'elinks'`` | :class:`Elinks('elinks')` | | 1417db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1427db96d56Sopenharmony_ci| ``'lynx'`` | :class:`GenericBrowser('lynx')` | | 1437db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1447db96d56Sopenharmony_ci| ``'w3m'`` | :class:`GenericBrowser('w3m')` | | 1457db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1467db96d56Sopenharmony_ci| ``'windows-default'`` | :class:`WindowsDefault` | \(2) | 1477db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1487db96d56Sopenharmony_ci| ``'macosx'`` | :class:`MacOSXOSAScript('default')` | \(3) | 1497db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1507db96d56Sopenharmony_ci| ``'safari'`` | :class:`MacOSXOSAScript('safari')` | \(3) | 1517db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1527db96d56Sopenharmony_ci| ``'google-chrome'`` | :class:`Chrome('google-chrome')` | | 1537db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1547db96d56Sopenharmony_ci| ``'chrome'`` | :class:`Chrome('chrome')` | | 1557db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1567db96d56Sopenharmony_ci| ``'chromium'`` | :class:`Chromium('chromium')` | | 1577db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1587db96d56Sopenharmony_ci| ``'chromium-browser'`` | :class:`Chromium('chromium-browser')` | | 1597db96d56Sopenharmony_ci+------------------------+-----------------------------------------+-------+ 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_ciNotes: 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci(1) 1647db96d56Sopenharmony_ci "Konqueror" is the file manager for the KDE desktop environment for Unix, and 1657db96d56Sopenharmony_ci only makes sense to use if KDE is running. Some way of reliably detecting KDE 1667db96d56Sopenharmony_ci would be nice; the :envvar:`KDEDIR` variable is not sufficient. Note also that 1677db96d56Sopenharmony_ci the name "kfm" is used even when using the :program:`konqueror` command with KDE 1687db96d56Sopenharmony_ci 2 --- the implementation selects the best strategy for running Konqueror. 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_ci(2) 1717db96d56Sopenharmony_ci Only on Windows platforms. 1727db96d56Sopenharmony_ci 1737db96d56Sopenharmony_ci(3) 1747db96d56Sopenharmony_ci Only on macOS platform. 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ci.. versionadded:: 3.3 1777db96d56Sopenharmony_ci Support for Chrome/Chromium has been added. 1787db96d56Sopenharmony_ci 1797db96d56Sopenharmony_ci.. deprecated-removed:: 3.11 3.13 1807db96d56Sopenharmony_ci :class:`MacOSX` is deprecated, use :class:`MacOSXOSAScript` instead. 1817db96d56Sopenharmony_ci 1827db96d56Sopenharmony_ciHere are some simple examples:: 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ci url = 'https://docs.python.org/' 1857db96d56Sopenharmony_ci 1867db96d56Sopenharmony_ci # Open URL in a new tab, if a browser window is already open. 1877db96d56Sopenharmony_ci webbrowser.open_new_tab(url) 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci # Open URL in new window, raising the window if possible. 1907db96d56Sopenharmony_ci webbrowser.open_new(url) 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_ci.. _browser-controllers: 1947db96d56Sopenharmony_ci 1957db96d56Sopenharmony_ciBrowser Controller Objects 1967db96d56Sopenharmony_ci-------------------------- 1977db96d56Sopenharmony_ci 1987db96d56Sopenharmony_ciBrowser controllers provide these methods which parallel three of the 1997db96d56Sopenharmony_cimodule-level convenience functions: 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ci 2027db96d56Sopenharmony_ci.. attribute:: name 2037db96d56Sopenharmony_ci 2047db96d56Sopenharmony_ci System-dependent name for the browser. 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ci.. method:: controller.open(url, new=0, autoraise=True) 2087db96d56Sopenharmony_ci 2097db96d56Sopenharmony_ci Display *url* using the browser handled by this controller. If *new* is 1, a new 2107db96d56Sopenharmony_ci browser window is opened if possible. If *new* is 2, a new browser page ("tab") 2117db96d56Sopenharmony_ci is opened if possible. 2127db96d56Sopenharmony_ci 2137db96d56Sopenharmony_ci 2147db96d56Sopenharmony_ci.. method:: controller.open_new(url) 2157db96d56Sopenharmony_ci 2167db96d56Sopenharmony_ci Open *url* in a new window of the browser handled by this controller, if 2177db96d56Sopenharmony_ci possible, otherwise, open *url* in the only browser window. Alias 2187db96d56Sopenharmony_ci :func:`open_new`. 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci 2217db96d56Sopenharmony_ci.. method:: controller.open_new_tab(url) 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ci Open *url* in a new page ("tab") of the browser handled by this controller, if 2247db96d56Sopenharmony_ci possible, otherwise equivalent to :func:`open_new`. 2257db96d56Sopenharmony_ci 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ci.. rubric:: Footnotes 2287db96d56Sopenharmony_ci 2297db96d56Sopenharmony_ci.. [1] Executables named here without a full path will be searched in the 2307db96d56Sopenharmony_ci directories given in the :envvar:`PATH` environment variable. 231