Невозможно переключить фокус на дочернее окно в браузере Safari с помощью транспортира

#javascript #safari #protractor

#javascript #safari #транспортир

Вопрос:

Невозможно переключить фокус на дочернее окно в браузере Safari версий 11 и 12

Версия ОС : macOS High Sierra и macOS Mojave

Ниже приведен фрагмент кода, который я пробовал.

 exports.switchWindowFocus = function (url) {

    var self = this;

     browser.getAllWindowHandles().then(function (handles) {

        browser.wait(self.windowCount(2), 10000);

         browser.switchTo().window(handles[1]).then(function(){

             expect(browser.getCurrentUrl()).toEqual(url);
         })
    });
};
 

По-прежнему фокус остается на главном окне вместо переключения на дочернее окно.

Может кто-нибудь, пожалуйста, помочь мне с этим?

Ответ №1:

Я был удивлен , увидев browser.wait(self.windowCount(2)) , что внутри browser.getAllWindowHandles() . Если вы получили все ручки, а этого еще не было, то ожидание этого впоследствии не принесет большой пользы. Кроме того, browser.wait вероятно, это должно быть обещание, связанное с тем, что последует после. Может быть, что-то вроде (непроверенный):

 exports.switchWindowFocus = function (url) {
  var self = this;
  browser.wait(self.windowCount(2), 10000).then(function() {
    browser.getAllWindowHandles().then(function (handles) {
      console.log(handles.length);
      browser.switchTo().window(handles[1]).then(function() {
        expect(browser.getCurrentUrl()).toEqual(url);
      })
    });
  });
};