2016-11-05 3 views
0

ためセレンwebdriverをにアップグレードした後3.0.0にセレンwebdriverを2.53.2からアップグレードした後、次の例ユニットテストは、もはや機能していないんpromise.defer()エラーがnodejsバージョン3.0.0

'use strict'; 

const webdriver = require('selenium-webdriver'); 

test.describe('Selenium Webdriver NodeJS API (selenium_webdriver-test.js)', function() { 
    test.it('Wait success using a custom promise', function() { 
     let finished = false; 

     function asyncOperation(delay) { 
      let deferred = webdriver.promise.defer(); 
      setTimeout(function() { 
       finished = true; 
       deferred.fulfill(true); 
      }, delay || 100); 

      return deferred; 
     } 

     let deferred = asyncOperation(100); 

     let waitPromise = driver.wait(deferred, TIMEOUT, 'waiting for a promise to succeed'); 

     waitPromise.then(function() { 
      assert.strictEqual(finished, true); 
     }).catch(function (e) { 
      throw new Error(e); 
     }); 
    }); 
}); 

と私にこのエラー・スタック与える:

1) Selenium Webdriver NodeJS API (selenium_webdriver-test.js) Wait success using a custom promise: 
    Error: TypeError: fn is not a function 
     at test\selenium\tests\0-helper\selenium_webdriver-test.js:189:10 
     at ManagedPromise.invokeCallback_ (node_modules\selenium-webdriver\lib\promise.js:1341:14) 
     at TaskQueue.execute_ (node_modules\selenium-webdriver\lib\promise.js:2950:14) 
     at TaskQueue.executeNext_ (node_modules\selenium-webdriver\lib\promise.js:2933:27) 
     at asyncRun (node_modules\selenium-webdriver\lib\promise.js:2793:27) 
     at node_modules\selenium-webdriver\lib\promise.js:675:7 
     at process._tickDomainCallback (internal/process/next_tick.js:129:7) 
    From: Task: Selenium Webdriver NodeJS API (selenium_webdriver-test.js) Wait success using a custom promise 
     at Context.ret (node_modules\selenium-webdriver\testing\index.js:185:10) 
     at node_modules\selenium-webdriver\testing\index.js:104:5 
     at ManagedPromise.invokeCallback_ (node_modules\selenium-webdriver\lib\promise.js:1341:14) 
     at TaskQueue.execute_ (node_modules\selenium-webdriver\lib\promise.js:2950:14) 
     at TaskQueue.executeNext_ (node_modules\selenium-webdriver\lib\promise.js:2933:27) 
     at asyncRun (node_modules\selenium-webdriver\lib\promise.js:2793:27) 

を私は現在、カスタム約束を作成するために、すべての場所でwebdriver.promise使用していないことだし、それはもはや期待通りに動作するようには思えません。

答えて

1

によって返されたDeferredオブジェクトのAPIが変更されました。

const waitPromise = driver.wait(deferred, TIMEOUT, 'waiting for a promise to succeed')の代わりにconst waitPromise = driver.wait(deferred.promise, TIMEOUT, 'waiting for a promise to succeed')を使用すると問題が解決します。

関連する問題