2016-04-13 22 views
3

私は以下のコードを持っています。分度器sendKeysはテキストボックスに何も送信しません

フォームは、認証コードがmySQLテーブルに書かれているものと同じであることを確認するアングルアプリの登録プロセスの一部です。

複数の入力(名、姓、電話番号、パスワード)と検証プロセスに進む次のボタンがある確認の前に前のフォームがあります。

すべてのWeb要素が正常に配置されています。サインアップ関数は約束を使ってすべてを処理するのにqを使用しています。

は、ここでは、コードです:

.then(function() { 
    return signupModalButton.click(); // The next button on the first form 
}) 

.then(function() { 
    return common.waitForElementToBeVisible(signupModalCode); // Wait for the code input to be visible 
}) 

.then(function() { 
    return getVerificationCodeFromDatabase(phoneUsed); // Read the code from mySQL database 
}) 

.then(function(code) { 

    console.log('Got verification code: ' + code); // Logs correctly 
    signupModalCode.sendKeys(code); // No keys get sent to the text box event if I change this to: 
    //signupModalCode.sendKeys('test'); 

    browser.wait(function() { 
    var ec = protractor.ExpectedConditions; 
    return ec.textToBePresentInElement(signupModalCode); 
    }, config.WAITING_TIMEOUT); // Same output with or without this browser.wait 

    signupModalCode.getText().then(function(text) { 
    console.log('text inside element: ' + text); 
    }) // Nothing gets logged 

    console.log('Entered code...'); // Gets logged! 
    return signupModalButton.click(); // Doesn't happen 
}) 

.then(function() { // Code doesn't reach here 
    console.log('Promise resolved...'); // Doesn't get logged 
}) 

テストは、私は、テキストボックスを見ることができます実行しているが、私はテキストがそこに入力されたん取得し、その後、ブラウザを閉じますと、次のエラーがで表示されますことを確認しますコンソール:

C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:108 
    var template = new Error(this.message); 
       ^
UnknownError: Session ID is null. Using WebDriver after calling quit()? 
Build info: version: '2.47.1', revision: '411b314', time: '2015-07-30 03:03:16' 
System info: host: 'Morbid-PC', ip: '169.254.67.136', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.7.0_72' 
Driver info: driver.version: EventFiringWebDriver 
    at new bot.Error (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:108:18) 
    at Object.bot.response.checkResponse (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:109:9) 
    at C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:379:20 
    at [object Object].promise.ControlFlow.runInFrame_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20) 
    at [object Object].goog.defineClass.notify (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25) 
    at [object Object].promise.Promise.notify_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12) 
    at Array.forEach (native) 
    at [object Object].promise.Promise.notifyAll_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:553:15) 
    at goog.async.run.processWorkQueue (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:130:15) 
    at runMicrotasksCallback (node.js:337:7) 
Error 
    at [object Object].ElementArrayFinder.applyAction_ (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\lib\element.js:392:21) 
    at [object Object].self.(anonymous function) [as sendKeys] (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\lib\element.js:76:19) 
    at [object Object].self.(anonymous function) [as sendKeys] (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\lib\element.js:721:11) 
    at C:\Users\ramtin\trooptraining\troop\troop-web\test\protractor\assets\lib-auth.js:224:23 
    at [object Object].promise.ControlFlow.runInFrame_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20) 
    at [object Object].goog.defineClass.notify (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25) 
    at [object Object].promise.Promise.notify_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12) 
    at Array.forEach (native) 
    at [object Object].promise.Promise.notifyAll_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:553:15) 
    at goog.async.run.processWorkQueue (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:130:15) 
From: Task: WebDriver.quit() 
    at [object Object].webdriver.WebDriver.schedule (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:362:15) 
    at [object Object].webdriver.WebDriver.quit (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:445:21) 
    at C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\driverProvider.js:59:14 
    at [object Object].promise.ControlFlow.runInFrame_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20) 
    at [object Object].goog.defineClass.notify (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25) 
    at [object Object].promise.Promise.notify_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12) 
    at Array.forEach (native) 
    at [object Object].promise.Promise.notifyAll_ (C:/Users/ramtin/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:553:15) 
    at goog.async.run.processWorkQueue (C:\Users\ramtin\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:130:15) 
    at runMicrotasksCallback (node.js:337:7) 
[launcher] Process exited with error code 1 

私はこの1つのテキストボックスへのアクセスに問題が何を把握することはできません、と分度器は、そのテキストボックスに関連するものをスキップする方法。

ご協力いただければ幸いです。

答えて

3

私はあなたがどちらか巣コールバックに持っていると思う:

.then(function() { 
    return signupModalButton.click().then(function() { 
    return common.waitForElementToBeVisible(signupModalCode).then(function() { 
     return getVerificationCodeFromDatabase(phoneUsed).then(function(code) { 
     // etc... 
     }); 
    }); 
    }); 
}); 

あるいは、明示的にすべての約束を解決し、Control Flowはそれを扱うことはできません。

+0

私は、移動する前に解決するためにmysqlを使用する関数の約束を待たなければなりません。そうしないと、Web要素とのやりとりの際にmysqlのデータは存在しません。 しかし、入れ子にされたソリューションが機能しました!問題を生成していた唯一の部分にネストされたコードを使用し、残りの部分をネストされていないスタイルで続けました。 ありがとうございました! –

関連する問題