Ошибка при попытке вернуться в исходное окно браузера с помощью 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);
});