переход между вкладками (открыт pdf файл)

angularjs
protractor
javascript
Теги: #<Tag:0x00007f3d403cdd98> #<Tag:0x00007f3d403cdb90> #<Tag:0x00007f3d403cda28>

(Azot Klas) #1

У меня на сайте есть ссылка. по нажатию на которую файл открывается в новой вкладке. и меня перекидывает на нее.
Как мне перейти обратно на первую вкладку?
browser.getAllWindowHandles().then(function(handles) {
browser.switchTo().window(handles[0]);
browser.driver.switchTo().window(handles[0]);
}
пробовал, не помогло. я остаюсь на этой же вкладке.
но я заметил такую штуку
если я пропишу browser.driver.close();
тогда закроется не та вкладка на которой я нахожусь (pdf файл), а первая вкладка(на которой я нажимал по ссылке).

что делать. не знаю.


(Ray Romanov) #2

Вкладка то открывается, а фокус теста остается в старой!!!


(Azot Klas) #3

так как мне перекинуть фокус на вторую вкладку (pdf)


(Ray Romanov) #4

Зачем, ведь вопрос звучал так:

Ты и так в ней остался, пущай тест идет дальше.


(Azot Klas) #5

проблема в том, что мне нужно перейти на вкладку PDF(куда меня и перекидывает). взять там url или titile. И вернуться обратно.и продолжить выполнение тестов.


(Ray Romanov) #6

Ну так бы и сказал :slight_smile:

 browser.getAllWindowHandles().then(function(handles) {
browser.switchTo().window(handles[1]);
}
... проверяем пдф вкладку
browser.driver.close();
browser.getAllWindowHandles().then(function(handles) {
browser.switchTo().window(handles[0]);
}
... вернулись к тестированию основной страницы

(Azot Klas) #7

я так и писал

this.checkLinks = function () {
    var handles = [];
    var link;
    return browser.wait(function () {
      var deferred = protractor.promise.defer();
      browser.getAllWindowHandles().then(function(hdls) {
        deferred.fulfill(hdls.length == 2);
      });
      return deferred.promise;
    }, 20000).then(function() {
      browser.ignoreSynchronization = true;
      return browser.getAllWindowHandles();
    }).then(function (hdls) {
      handles = hdls;
      return browser.driver.switchTo().window(handles[1]);
    }).then(function() {
      return browser.getCurrentUrl();
    }).then(function(currentLink) {
      link = currentLink;
      return browser.driver.close();
    }).then(function() {
      return browser.driver.switchTo().window(handles[0]);
    }).then(function() {
      browser.ignoreSynchronization = false;
      return Promise.resolve(link);
    });
  };

(Ray Romanov) #8

Ну в javascript я не силен, основные принципы понимаю, вроде все правильно...


(Azot Klas) #9

Я юзаю эту функцию много где.
например у меня есть ссылки на другие сайты. я нажимаю, меня так же перебрасывает на другую вкладку. берется ЮРЛ и перебрасывает на первоначальную вкладку все работает. А с PDF или другими файлами, которые может открыть Chrome он не работает.


(Ray Romanov) #10

Как я понимаю, эта вкладка как-бы является плаггином, поэтому и не учитывается в списке вкладок...


(Azot Klas) #11

вот и я так думаю(
беда печаль


(Сергей Кузьмин) #12

https://www.google.com/search?q=facepalm+icon
а страница доступна для тестирования ?


(Yaroslav Pernerovskyy) #13

Когда открывается новая вкладка то сколько открытых окон возвращается методом getAllWindowHandles(); ?


(Сержан Есенбек) #14

нельзя ли у через комбинацию клавиш и мыши закрыть новую вкладку
в крайнем случае можно через autoit сделать


(Pavel Stryhelski) #16

Так если нужно просто взять урл для продолжения теста - почему бы просто не выдернуть его из аттрибутов линки, которая открывает тот самый ПДФ, и его использовать в дальнейшем?