Zombie.js
Fast, full-stack, headless browser testing using node.js
...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.