2017-04-10 5 views
0

現在、キュウリ - 分度器 - フレームワークとJavascriptで分度器5.1.0を使用しています。キュウリのシナリオ例の同じページを使用

機能ファイルに次のシナリオの概要を使用して:

Feature: As an online customer 
I should be able to validate the Benefits Page and links on it 

Background: 
Given I am on the "Benefits Page" 

@regression @fixup 
Scenario Outline: validation of the MyPage links 
When I click on the "<link>" link 
Then a new tab should be opened 
Then I should be directed to the "<URL>" in new window 

Examples: 
|link     |URL          | 
|Benefit (PDF)   |/guide-to-benefit.pdf     | 
|Pro Benefit (PDF)  |/professional-benefit.pdf    | 
|Signature Benefit (PDF) |/signature-guide-to-benefits-revised.pdf | 
|Business Benefit (PDF) |/business-benefits.pdf     | 

とページファイルは、次のとおりです。

var Benefits_Guide_Page = function (PageUrl) { 

    this.visit = function (PageUrl) { 
    browser.manage().deleteAllCookies(); 
    browser.get(PageUrl); 
}; 

this.get_element = function (element_name) { 
    switch (element_name) { 

    //Links Navigates to different window 

    case "Benefit (PDF)": 
    case "Pro Benefit (PDF)": 
    case "Signature Benefit (PDF)": 
    case "Business Benefit (PDF)": 
    return element(by.linkText(element_name)); 
    break; 

    ... // continue element checks 

各シナリオには、タブを開く新しいタブに切り替え、URLを検証新しいタブを閉じて元のタブに切り替え、は元のページをリロードし、次のの例であるをリロードします。

私はthis Android Q&Aに何か答えがあると思いますが、それは同じ問題だとは思いません。

基本的に、各例でページをリロードする必要はありません。大規模なテストとの関連で無駄で時間がかかります。

私は同じウィンドウでリンクの読み込みをチェックしている他のシナリオがあります。私はちょうど "戻る"と次のリンクまたは同じページのアンカーを確認し、再度ページをロードする必要があります。

ヒント?

+0

新しいタブが新しい​​タブで開く場合 - 元のページを再読み込みする理由は何ですか?新しいタブのために元のページに影響はありますか?元のページをリロードしない場合...同じタブで新しいページを開く場合 - browser.navigate()。back()を試して元のページに戻ってください... – Grasshopper

+0

私はあなたは最初にページに行くと思いますか?あなたはそれをifステートメントでラップすることができます。私がこのページにまだいない場合は、そのページを入手してください。これは、それが一度だけ、または失敗した場合に意味します。 –

+0

@Grasshopperと@ kyle-fairnsは、いくつかの文脈を追加しました。 _元のページをリロードする理由は何ですか?** **私が知ることはできません。それはページ定義ファイルの結果であるように見えますが、フィーチャーファイルも同様に整理されているかどうかはわかりません。それぞれの_example_がページ定義を呼び出すと、スタックされている可能性があります。 _note_私は混乱を継承しました。このページでは、約束を使用していなかったので、実行ごとに5秒の「スリープ」を入れて待機するため、2分かかりました。それを30秒に減らしました。私はリロードの問題を解決できるなら、私はもっと剃ることができると思う。 – javafueled

答えて

1

シナリオ概要は、いくつかのシナリオを簡潔に記述する単なる方法です。各シナリオは最初から開始されるため、最初のページが読み込まれます。これをより効率的にしたい場合は、シナリオの概要を使用せず、シナリオを少なくしてください。

ブラウザが別のウィンドウに移動できることをテストする必要があるのは本当にわかりません。ブラウザのリンクをクリックするとかなりうまくいくと思いますので、実際にテストするだけですリンクまたはページ上に表示されます。だから、

Given I am on the benefits page 
Then I should see the benefits pdf's 

を書くことができ、あなたの実装で

benefits_pdf.each do |pdf| 
    page.should have_link pdf.link 
end 

のようなものをbenefits_pdfsコレクションの概念を導入します。これはおそらく10倍速く実行され、ほとんど同じユーティリティを提供するシナリオを与えます。

関連する問題