Zombie.js
Fast, full-stack, headless browser testing using node.js
... Web browser, Zombie manages multiple open windows as tabs. New browsers start without any open tabs. As you visit the first page, Zombie will open a tab for it. All operations against the browser object operate on the currently active tab (window) and most of the time you only need to interact with that one tab. You can access it directly via browser.window. You can access all open tabs from browser.tabs. This property is an associative array, you can access each tab by its index number.