2016-03-11 6 views
11

角度のないアプリケーションで分度器を使ってテストケースを書くのが初めてです。私はサンプルテストケースを書いた。ここでは、テストケースを実行した後にブラウザが自動的に閉じられる。これを防ぐにはどうすればよいですか?ここに私のコードは、私はあなたがあなたのクリック操作の前にbrowser.driver.sleep(500);使用することをお勧め分度器のテストケースを書くときにブラウザを自動的に閉じるのを止める方法

var submitBtnElm = $('input[data-behavior=saveContribution]'); 

     it('Should Search', function() { 
     browser.driver.get('http://localhost/enrollments/osda1.html'); 
     browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50); 
     submitBtnElm.click().then(function() { 

     }); 
     }); 
+0

あなたはもう少しあなたの質問を説明できますか?ブラウザが自動的に閉じるとはどういう意味ですか?スクリプトの実行が完了したらブラウザを閉じるべきではありませんか?おかげで –

+0

@ GirishSortur私はクリックアクションを実行したい。しかし、ブラウザはclick.Iを起動する前に閉じて、質問のコードを更新しました。 – Balu

+0

ウィンドウが閉じた後にコンソールにログがありますか?最後に分度器/ジャスミンは何を報告しますか? – Gunderson

答えて

4

です。

これを参照してください。

browser.driver.sleep(500); 

element(by.css('your button')).click(); 
browser.driver.sleep(500); 
+0

私は同様の問題を持って、私はbrowser.sleep(1000)を使用します。それは私の問題を解決していない私もDEFAULT_TIMEOUT_INTERVAL = 120000を変更します。結果がない場合は、ページがロードされる前にすべてのテストがパスされます。 – Emna

+2

このような睡眠は良いことではありません。あなたはそれが動作していないようです – AdityaReddy

4

Itブロックにコールバック関数を追加すると、ブラウザウィンドウが呼び出されるまで閉じることができません。 だから私は、ボタンをクリックして、ページ上のトリガ変更があると確信しているあなたが必要なアクションを実行すると便利

var submitBtnElm = $('input[data-behavior=saveContribution]'); 
    it('Should Search', function(callback) { 
    browser.driver.get('http://localhost/enrollments/osda1.html'); 
    browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50); 
    submitBtnElm.click().then(function() { 
     // Have all the logic you need 
     // Then invoke callback 
     callback(); 
    }); 
    }); 
2

でコールバックを置きます。要素のクラス変更のような微妙なものでも、要素の「Saved」というテキストが明瞭なものでもかまいません。私がすることは、テストの後、この変更を明示的に待つことです。あなたのテストはしても分度器角度暗黙の待機せずに分離されるように

[...] 
return protractor.browser.wait(function() { 
    return element(by.cssContainingText('p', 'Saved')).isPresent(); 
}, 10000); 

あなたは、あなたのspecファイルのafterEach()方法に、このような待機メカニズムを追加することができます。

2
var submitBtnElm = $('input[data-behavior=saveContribution]'); 

    it('Should Search', function() { 
    browser.driver.get('http://localhost/enrollments/osda1.html'); 
    browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50); 
    submitBtnElm.click().then(function() { 

    }); 
    browser.pause(); // it should leave browser alive after test 
    }); 

browser.pause()は、ブラウザを放置するまでブラウザを生かしておく必要があります。

@編集もう1つの方法は、browser.get(...)の前にbrowser.ignoreSynchronization = trueを設定することです。分度器はAngularがロードされるのを待たず、通常の要素(...)構文を使用できます。

5

browser.pause()を最後に追加します。関数そのもの。

+0

開いているブラウザウィンドウを維持するために使用するコールバック関数を持っている場合、関数の内部または外部 – SomeoneElse

2

ブラウザをしばらく閉じないでください。browser.wait()を使用してください。表示されない要素のvisibilityOf()またはinvisibilityOf()をチェックするためのwait関数書き込みロジックの内部で、UIで非表示になるまでに時間がかかります。この場合wait()は条件が満たされるかタイムアウトに達するまでロジックをチェックし続けます。ブラウザの表示時間を長くしたい場合は、タイムアウトを長くすることができます。

var EC=protractor.ExpectedConditions; 
var submitBtnElm = $('input[data-behavior=saveContribution]'); 

it('Should Search', function() { 
    browser.driver.get('http://localhost/enrollments/osda1.html'); 
    browser.driver.findElement(by.id('contributePercentValue')).sendKeys(50); 
    submitBtnElm.click().then(function() { 
    browser.wait(function(){ 
      EC.invisibilityOf(submitBtnElm).call().then(function(isPresent){ 
       if(isPresent){ 
        return true; 
       } 
      }); 
     },20000,'error message'); 
    }); 
    }); 
0

私はまた、私たちは、複数のアプリケーションと対話し、分度器を使用した場合、ブラウザは1つのconf.jsファイルを実行した後に閉じられたテストケースフローを持っていた同様の問題に苦しんでいました。今すぐ前の応答を調べると、次のアクションがどれくらい速く実行されたか、またはヒットまたはミスしたかによって遅延が追加されるようなものでした。デバッグの観点から考えても、ほとんどのユーザーは一晩の実行を行い、問題を分析するまで数時間ブラウザを有効にしたいと考えています。だから、私は分度器の基本コードを調べ始め、この問題を回避できる一般的なソリューションを見つけ出しました。これはブラウザとは無関係です。現在のところ、この解決策は、あるconf.jsファイルが実行された後にブラウザが閉じるべきではないという要件に固有のものであり、誰かが実行後にブラウザを閉じるかどうかを尋ねる設定パラメータを追加できれば改善できる。

ブラウザは、コマンドラインで--seleniumSessionIdタグを使用して、今後のconf.jsファイルの実行時に再利用できます。

ソリューション:

  • 行くに.. \のAppData \ローミング\ NPM \ node_modules \分度器\建てあなた 分度器がインストールされています。
  • オープンdriverProvider.jsファイルとquitDriver
  • を機能させるに行く限り、何の側がないように思える私の現在の使用量としてリターンdriver.quit()による返品0

を交換してくださいこの変更により他の問題が発生した場合は、コード変更の効果が更新されます。下記のコードスニペットのスナップショット。

おかげでコードスニペットの グリーソン

スナップショット: Snapshot of code snippet

+0

こんにちはグリーソンのいずれか、解決策は、以下を参照してください - あなたはあなたの答えに直接あなたのコードを掲示する検討すべきです。インデックス作成と参照が容易になります。 –

関連する問題