Ошибка при попытке вернуться в исходное окно браузера с помощью intern leadfoot

Я получаю следующую ошибку при вызове switchToWindow(handle): нулевое значение в записи: name=null

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

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);
    });
Другие вопросы по тегам