2017-06-08 12 views
1

ログインには以下の機能があります。成功すると「成功」、ファイルが失敗しました。 分度器Javascriptが順番に実行されていません

function login() { 

return new Promise(function (resolve, reject) { 
    var username = element(by.name('txtLogin')); 
    var password = element(by.id('txtPassword')); 
    var signInButton = element(by.id('btnSignIn')); 

    for (var i = 0; i < testData.length; i++) { 
     if (testData[i].env === appConfig) { 
      username.sendKeys(testData[i].user); 
      password.sendKeys(testData[i].pass); 
      signInButton.click(); 
      console.log("Successfully Clicked on the Sign In Button!"); 
      break; 
     } 
    } 
    browser.getTitle().then(function (title) { 
     if (title == "Page Title") { 
      resolve("Successfull"); 
     } else { 
      reject("Failed"); 
     } 
    }); 
}); 
}; 

、次のテスト

describe('Login Scenarios', function() { 

beforeEach(function() { 
    login(); 
}); 

it('Valid Credentials, Should login successfully from util class', function() { 
    console.log('Successfully logged in!'); 
}); 
}); 

私はここに非常に奇妙な行動を見ています。この行は、ページが完全にロードされる前でも出力​​を実行し、コンソールを操作します。

console.log("Successfully Clicked on the Sign In Button!"); 

以下のコードは決して実行されません。

browser.getTitle().then(function (title) { 
     if (title == "Page Title") { 
      resolve("Successfull"); 
     } else { 
      reject("Failed"); 
     } 
    }); 

最後に、次のエラーが表示されます。

failed: error while waiting for protractor to sync with the page: "cannot re ad property '$$testability' of undefined" 

私はここで何かを台無しにしました。しかし、ここで何が間違っているのか理解できません。

答えて

2

loginは約束を返しますが、あなたはジャスミン/分度器にそれが完了するのを待つ必要があると伝えていません。あなたはdoneコールバックを使用してこれを行うことができます。

beforeEach(function (done) { 
    login().then(function() { 
     done(); 
    }); 
}); 

は、詳細は(inexplicibly彼らの新しいウェブサイトのレイアウトに隠されていると思われる...)Jasmine documentationを参照してください。

関連する問題