2016-04-27 4 views
0

Я получаю следующее сообщение об ошибке, когда я звоню switchToWindow (ручка): нулевое значение во въездной: имя = нульОшибка при попытке переключиться обратно в исходное окно браузера с помощью стажера Лэдфут

Оригинальное окно еще open, когда я пытаюсь переключиться и обработать, не является нулевым или пустым. Вот код, который я использую:

var session = this.remote; 
var handle; 

return session 
    .get('http://www.google.com') 
    .getCurrentWindowHandle() 
    .then(function (currentHandle) { 
     console.log('handle: ' + currentHandle); 
     handle = currentHandle; 
    }) 
    .execute(function() { 
     var newWindow = window.open('https://www.instagram.com/', 'insta'); 
    }) 
    .switchToWindow('insta') 
    .closeCurrentWindow() 
    .then(function() { 
     console.log('old handle: ' + handle); 
    }) 
    .sleep(2000) 
    .switchToWindow(handle); 

ответ

1

Цепочка команд - это одно выражение JavaScript. Это означает, что все аргументы для всех вызовов в цепочке оцениваются сразу, синхронно. Когда handle присваивается в обратном вызове then в верхней части цепочки, он не будет влиять на вызов switchToWindow в нижней части цепочки, поскольку значение handle уже было оценено до выполнения обратного вызова then.

Если вы хотите сохранить ссылку на значение в начале цепочки и использовать его позже, оба использования должны быть в then обратных вызовах.

return session 
    ... 
    .then(function (currentHandle) { 
     handle = currentHandle; 
    }) 
    ... 
    .then(function() { 
     return session.switchToWindow(handle); 
    }); 

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

  • Нет связанных вопросов^_^