2014-11-07 2 views
7

После открытия новой вкладки (второй) я пытаюсь перейти на первую вкладку.Переключатель транспортировщика на предыдущую вкладку

 common.clickOpenNewSession(); //it opens the new tab 

browser.getAllWindowHandles().then(function (handles) { 
    var secondWindowHandle = handles[1]; 
    var firstWindowHandle = handles[0]; 
    browser.switchTo().window(secondWindowHandle).then(function() { //the focus moves on new tab 
     browser.sleep(3000); 
     expect(browser.driver.getCurrentUrl()).toContain("url"); 
//do some actions 

    }); 
//below it doesn't work. I try to go back on previous tab without closing the second tab 
    browser.actions().sendKeys(protractor.Key.CONTROL).sendKeys(protractor.Key.TAB).perform(); 
    browser.sleep(4000); 
    browser.driver.switchTo().window(firstWindowHandle); 
    browser.setLocation('http://google.com'); 
}); 
+0

У меня такая же проблема, я попробовал другой подход, как инкапсулировать это в обещание, использовать browser.switchTo(). Window (tab1) .. нет успеха .. – Teodor

ответ

8

Проблема заключается в том, что вы пытаетесь перейти на предыдущую вкладку с помощью Ctrl + Tab, вместо того, чтобы использовать окно ручки, чтобы переключиться обратно. Это не поддерживается в WebDriver, поскольку использование ctrl + tab является системной операцией и не может быть эмулировано в вашем браузере для всех ОС/браузеров. Просто используйте browser.switchTo() еще раз.

+0

Возможно ли закрыть вкладку через Protractor? – Aaron

4

@Aaron Этот код позволяет получить все доступные браузеры и разрешает их. Затем откроется вкладка, созданную <a href='newlink' target='_blank'>Link</a>:

POFile.buttonWithABlankTarget.click().then(function() { 
    browser.getAllWindowHandles().then(function(handles) { 
     var newTabHandle = handles[1]; 
     browser.switchTo().window(newTabHandle).then(function() { 
      // Expect the newly opened tab URL to equal the href of the invitation 
      expect(browser.driver.getCurrentUrl()).toContain("http://..."); 
     }); 
    }); 
}); 

Таким же образом, вы можете переключаться между вкладками:

it("should open the first tab", function() { 
    browser.getAllWindowHandles().then(function (handles) { 
     browser.switchTo().window(handles[0]); 
    }); 
}); 

И, конечно, закрыть вкладку:

it("should close the second tab and return to the first tab", function() { 
    browser.getAllWindowHandles().then(function (handles) { 
     // We currently are on the second tab... 
     browser.driver.close(); 
     browser.switchTo().window(handles[0]); 
    }); 
}); 

Надеюсь это поможет!

Смежные вопросы