2016-08-26 12 views
0

分度器とjavascriptでかなり新しいです。文字列と属性値を比較すると問題が発生します。コンソール上のメッセージは、30000ミリ秒後に機能がタイムアウトしました。分度器APIでは、条件を想定して関数を作成する必要はないと言います。関数を作成して要素を印刷すると、適切な値が得られますが、予想と比較しようとすると 'TypeError:getAttributeが呼び出せません'というヒントがありますか?GetAttributeを分裂器で比較するとタイムアウトになる

クラスの要素:

'use strict'; 

var protractor = require('protractor'); 
var element = protractor.element; 
var by = protractor.by; 

function Elements() { 
    return { 
     getDate: function() { 
      return element(by.id('visit-date')); 
     } 
    }; 
} 

module.exports = Elements; 

クラスアサーション:

'use strict'; 

var Elements = require('./elements'); 
var protractor = require('protractor'); 
var browser = protractor.browser; 

function Assertions() { 

    var elements = new Elements(); 

    return { 
     assertDate: function() { 
      var dateElement = elements.getDate(); 
      return expect(dateElement.getAttribute('value')).to.eventually.contain('2015-08-26'); 
     }, 
     assertUpdatedTexts: function() { 
      return this.assertDate(); 
     } 
    }; 
} 

module.exports = Assertions; 

ありがとうございます!

+0

私は、dateElement.getAttribute( 'value')を試してみるつもりでした。(function(attr){ return expect(attr).toContain( "2015-08-26"); [@juliemr https://github.com/angular/protractor/issues/673]しかし、それは動作することができますが、あなたはそこに行く必要はありません知っているように聞こえる。 –

答えて

0

は、我々は、アサーションの日付関数を変更し、固定している:

assertDate: function(datetime) { 
      var dateElement = elements.getDate(); 
      var dateValue = dateElement.getAttribute('value'); 
      return expect(dateValue).to.eventually.contain(datetime.format('YYYY-MM-DD')); 
     }, 

と適切な日付のない文字列のように日付パラメータを渡す:

var VISIT_DATETIME = moment({y: 2016, M: 7, d: 21, h: 12, m: 20}); 
var VISIT_DURATION = moment.duration({hours: 3, minutes: 20}); 

はとにかく助けをありがとう!

0

モカをテストランナーとして使用しているようですか?分派器は自動的に約束を処理するジャスミンをハックしますが、ではなく、モカです。したがって、ジャスミンを使用するか約束を.then()で処理してください。問題の

関連する問題