/** * Opens a new tab for the given URL * @param string $url The URL to open * @return string The handle of the previously active window * @see http://stackoverflow.com/a/9122450/650329 * @throws SeleniumJavaScriptErrorException If unable to open tab */ public function newTab($url) { $script = "var d=document,a=d.createElement('a');a.target='_blank';a.href='%s';a.innerHTML='.';d.body.appendChild(a);return a"; $element = $this->_driver->executeScript(sprintf($script, $url)); if (empty($element)) { throw new Exceptions\JavaScriptError('Unable to open tab'); } $existingHandles = $this->_driver->getWindowHandles(); $anchor = new WebElement($this->_driver, $element['ELEMENT']); $anchor->click(); $this->_driver->executeScript('var d=document,a=arguments[0];a.parentNode.removeChild(a);', array($element)); $newHandles = array_values(array_diff($this->_driver->getWindowHandles(), $existingHandles)); $newHandle = $newHandles[0]; $oldHandle = $this->_driver->getWindowHandle(); $this->window($newHandle); return $oldHandle; }