2017-11-17 6 views
0

私はいくつかの簡単な仕様を順番に実行しています。最初のものは、Webページタイトルのアサーションがexpectで、2番目のものと同じです。分度器を使用する 'Expect'

しかし、シーケンスを実行すると、最初のアサーションは成功しますが、2番目のアサーションは失敗し、console.logは最初の仕様の部分がexpectの部分が2番目の仕様のexpectとマージされたことを示します。

私はこれがと約束していると感じています ...誰かがこれを確認(または拒否!!)して約束を閉じる方法を助言できますか?

おかげ

まずスペック

describe('JL Homepage', function() { 
//browser.waitForAngularEnabled(false); 
browser.get('https://mwac-johnlewis-dev.digitalbridge.eu/landing'); 

browser.sleep(10000); 


it('should have a title', function(){ 
expect (browser.getTitle()).toBe('John Lewis Wallpaper Visualiser: 
Welcome'); 
}); 

}); 

セカンドスペック

describe('Demo photo', function() { 
browser.waitForAngularEnabled(false); 


browser.sleep(3000); 
element(by.xpath('html/body/webapp-app/div/div/webapp-johnlewis-landing/div/div/ul/li[2]/a/span')).click(); 

it('should load a demo room', function(){ 

    expect (browser.getTitle()).toEqual('John Lewis Wallpaper Visualiser: Design your room'); 

browser.sleep(3000); 
}); 

}); 

コンソール

2 specs, 1 failure 
Finished in 19.409 seconds 


************************************************** 
*     Failures     * 
************************************************** 

1) Demo photo should load a demo room 
    - Expected 'John Lewis Wallpaper Visualiser: Welcome' to equal 'John 
    Lewis Wallpaper Visualiser: Design your room'. 

Executed 2 of 2 specs (1 FAILED) in 19 secs. 
[12:08:21] I/launcher - 0 instance(s) of WebDriver still running 
[12:08:21] I/launcher - chrome #01 failed 1 test(s) 
[12:08:21] I/launcher - overall: 1 failed spec(s) 
[12:08:21] E/launcher - Process exited with error code 1 
Admins-MacBook:jl_autotests davidredmayne$ 
+0

あなたの行動の全ては 'it'ブロック内にする必要があります。したがって、 'browser.get'メソッドと' click'メソッドは適切な場所にありません。 'expect'の直前にブロック内に移動してください。 – Gunderson

+0

こんにちは、これを試しましたが、非同期エラーが発生しました。注文を確認できますか?1。説明する........ 2。アクション.... 3。それは期待しています。 –

答えて

1

有効なジャスミンブロック内にすべてのアクションをラップする必要があります。

an introduction of Jasmine with examples herelatest API description hereを探します。さらにとして

:負荷にページが含まれている場合は角度分度器は、知ることができないのでbrowser.get()は、常に扱いが少し難しいです。したがって、ページが完全にロードされる前に、テストの実行を続けることができます。私がする最初の仕様を提案し、どのように、あまりにも速く実行を阻止ここExpectedConditionsbrowser.wait()

を使用するには

describe('JL Homepage', function() { 
    //possibility for beforeAll(), beforeEach(), afterAll(), afterEach() 
    it('should load the page and have a title', function(){ 
     var EC = protractor.ExpectedConditions; 
     browser.get('https://mwac-johnlewis-dev.digitalbridge.eu/landing'); 
     //wait until URL has changed 
     browser.wait(EC.urlIs('https://mwac-johnlewis-dev.digitalbridge.eu/landing'),5000); 
     //wait until page has finished loading 
     browser.waitForAngular(); 
     expect (browser.getTitle()).toBe('John Lewis Wallpaper Visualiser: Welcome'); 
    }); 
}); 
+0

あなたは "browser.waitForAngular();"特に例では、分度器のために。これには、各呼び出しのために組み込まれ実行されている機能があります。これは、分度器全体の原則です。 –

+1

@EdLinac:一般的には真ですが、すべてには常に例外があります。そして、 'browser.get()'の問題はこの例外です。 Browser.get()はまだ多くの問題を引き起こしているので、今までのところ最も安定した解決策は、新しいURLを待つことが判明し、明示的に 'browser.watiForAngular()'を実行することでした(read here [here](https:// github .com/angular/protractor/issues/2461)または[ここ](https://github.com/angular/protractor/issues/2567)または[ここ](https://github.com/angular/protractor/issues)/3374)) –

+0

クール、私はその問題を認識していませんでした。 :) –