2014-09-29 20 views
2

下面是一個代碼我打開一個新的標籤(新標籤不開放)如果我們以「」使用的代碼 - 一切都很好:如何可以用量角器和Chrome瀏覽器

//選擇頁面

所有
browser.actions().sendKeys(protractor.Key.CONTROL +'a').perform(); 

量角器V.1.3.1

鉻V.37

ChromeDriver V.2.10

webdriver的v.2.43

回答

2

硒不提供一種方式來做到這一點所以解決方法似乎是唯一的方法。 假設你在Windows或Linux的時候,您的CTRL + T想法應該寫成下面,但是該黑客失敗對我來說:

browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('t').perform(); 

甚至試圖做一個元素:

$$('input').first().sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "t")); 

好消息是下面的技巧似乎工作,你要打開隨時與網址替換掉location.href

browser.driver.executeScript(function() { 
    (function(a){ 
    document.body.appendChild(a); 
    a.setAttribute('href', location.href); 
    a.dispatchEvent((function(e){ 
    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null); 
    return e; 
    }(document.createEvent('MouseEvents'))))}(document.createElement('a'))); 
}); 
+1

尼斯,獅子座。我嘗試了前兩個,但也失敗了......不知道第三個。謝謝! – Brine 2014-09-29 21:22:08

+0

第三個是我的作品。只需添加a.setAttribute('target','blank'); – 2016-01-20 10:41:14

1

如果你真的不想要的元素添加到您的DOM,那麼你可以試試這個:

let url = https://google.com; 
return browser.executeScript("return window.open(arguments[0], '_blank')", url); 
//opens google.com in a new tab (works fine with Chrome. P.S. have only tested 
// Chrome with Protractor). 

我試過了以上陳述與browser.wait(),看你是否真的需要等待,因爲browser.executeScript()本身就會回報承諾,只能利用承諾的成功。

此外,我觀察到,儘管瀏覽器的焦點似乎已改變爲新打開的選項卡,但我無法訪問新選項卡的元素。要做到這一點:

browser.getAllWindowHandles().then((handles) => { 
    browser.switchTo().window(handles[1]); // pass the index, here assuming that 
               // there are only two tabs in the browser 
}) 

要了解更多關於window.open(),您可以訪問this.

相關問題