List of open browser tabs programmatically

Question:

Is there a way to programmatically obtain a list of open tabs in a browser by index?

For example, suppose Google Chrome is open with two tabs.
In the program, a line something like:

tabs_list = list_tabs(hwnd)

…where hwnd is the handle to the window for the overall Chrome instance and tabs_list is a dictionary something like:

{
  0 : 'http://stackoverflow.com/',
  1 : 'http://www.otherstufff.com/'
}

(…or maybe by title of the window instead of url)

If so, then bringing focus to one of them can be possible from the Python script with keyboard commands, control- (CTRL-) like control-1 or control-2.


An edit added later to try to help clarify: Picture a local wxPython app, where you already know how to activate a given instance of Chrome on that same box from within your wxPython app running locally, and that browser instance has multiple tabs open, and now you want to insure that a certain tab has focus, to be able to interact with that web page that is being displayed (maybe using CTRL-A CTRL-C for example to harvest its content). This question is not about issuing keyboard commands, that is already known, the question is how to obtain a list of open tabs, if possible, thanks.

Asked By: gseattle

||

Answers:

Its not possible. First you haven’t noted what app you develop but if you use python for a website backend – then its just a server-side language and does not know what a “browser” is – the server outputs to the browser and thats all. And I don’t believe it’s possible with client-side language like javascript as this seem to be a serious security and privacy issue if it was possible.

Edit: If you are developing a Chrome plugin lets say it might be a whole different story – but then it goes towards the Chrome API and your tagging is wrong, as “python” itself can not do that.

Answered By: ddinchev

While not sure of your target OS, you can do this on Mac OS X:

>>> from appscript import *
>>> map(lambda x: x.title(), app('Google Chrome').windows[0].tabs())
[u'Stack Overflow', u'Google']

On Windows, you will want to look into OLE Automation with Python.

Answered By: Art Taylor

You can get the title of all open windows using the PyGetWindow library.

This won’t give you a list of tabs open in your browser, but it should give you the title of the current active tab in your browser.

https://pypi.org/project/PyGetWindow/

Answered By: Tony Miri
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.