0

ログイン機能を持つ角度jsのWebサイトを自動化しています。すべて私がしたいと思うリンクをクリックし、ユーザー名とパスワードを入力します。しかし、何とか私のスクリプトはページの読み込みよりも速く実行されています。私はこれを処理することができますどのように私にアドバイスをください: マイログインページオブジェクトは次のとおりです。分度器のテストスクリプトがページの読み込みより高速に実行されています

'use strict' 
// Normal Login 
require('../page-objects/loginPage.js'); 
var customerPortalHome = function() { 

    this.clickSignIn = function() { 
     browser.sleep(5000); 
     element(by.linkText('Sign In')).click(); 
     browser.waitForAngular(); 
     browser.sleep(2000); 
     return require('./loginPage.js'); 

    } 

} 


module.exports = new customerPortalHome(); 

私のテスト仕様です。

var co = require('co'); 
var UI = require('./ui.js'); 
var ui = new UI(); 
var CustomerPage = require('../page-objects/customerPortalHome.js') 

describe(" Smoke Test Login to the application", function() { 

     it("test", co.wrap(function*() { 
      var EC = protractor.ExpectedConditions; 
      browser.get(ui.createStartLink()); 
      expect(browser.getTitle()).toContain("Portal"); 
      // Verify if user is able to Login into the application 
      var loginPage = CustomerPage.clickSignIn(); 
      loginPage.switchToFrame('account-sdk'); 
      var reportPage = loginPage.clickLogin('[email protected]', '$$$$$'); 
      expect(browser.getCurrentUrl()).toContain('reports'); 
      reportPage.clickSignOut(); 
      expect(browser.getCurrentUrl()).toContain("?signout"); 
      browser.sleep(800); 
     })); 

    }); 

テストを実行するたびにブラウザが1秒間開いて閉じます。

マイOnprepare方法は、次のようになります。ブラウザの睡眠を使用して

beforeLaunch: function() { 
     return new Promise(function (resolve) { 
      reporter.beforeLaunch(resolve); 
     }); 
    }, 
    onPrepare: function() { 
     browser.manage().timeouts().implicitlyWait(5000); 

     afterEach(co.wrap(function*() { 
      var remote = require('protractor/node_modules/selenium-webdriver/remote'); 
      browser.driver.setFileDetector(new remote.FileDetector()); 



     })); 
+0

はい角膜が角膜で速くて明るくなります。我々はそれを遅くする必要がある場合は睡眠を使用することができます。 –

答えて

0

は行うための最善のことは、要素を待ってから、そうするために機能を使用することです良いアイデアになることはありません。

element(by.xpath("xpath")).click().then(function(){ 
     var list = element(by.id('id')); 
     var until = protractor.ExpectedConditions; 
     browser.wait(until.presenceOf(list), 80000, 'Message: took too long'); 
    }); 
+0

HI Acid ....はい...しかし、なぜ私の暗黙の待ち時間が働いていないのだろうかと疑問に思っています... – Jatin

+0

URフレームの変更のようです...フレームの変更後に上記のソリューションを実装できますか? – Acid

0
browser.wait(protractor.ExpectedConditions.visibilityOf($$('.desk-sidebar > li').get(num-1)), 60000); 

通常、私は、この待ち時間を使用しています。

0

ページオブジェクトヘルパーのどこかにfalseを入れずにignoreSynchronisationを使用していますか?

多くのリダイレクトがあると、ログインによってwaitForAngularが破損することがあるので注意してください。私は、ログをとるときにロードするページを待つために汚れた睡眠を使用してしまいました(他の解決策が見つからず、URLの変更に対してigno​​reSync、ECがあり、要素を待つことは解決策ではありませんでした)。

あなたもエラーを共有する必要があります。

関連する問題