2017-01-10 11 views
1

これは、ブロックが含まれています。element.element(by.model("$ctrl.benchmark.name")); これはDomにはありません。それは、要素がページ上にないが、それの後に書かれたすべての行のコードを実行するというエラーを私に与える。私はこれが上記のパスを次に辿るならば、シーケンシャルな方法でこれを扱いたい。これらのタイプの問題は、分度器でどのように処理できますか?分度器テストをどのように順番に処理するか

it("Test BenchMark",function(){ 
    browser.getTitle().then(function (name) { 
     console.log(name); 

     browser.sleep(2000); 
     element(by.linkText("Manage Benchmarks")).click(); 
     browser.sleep(4000) 


     //element(by.xpath("//main[@class='ng-scope']//a[text()='Create Benchmark']")).click(); 
     console.log("megha"); 
     element(by.model("$ctrl.benchmark.name")).sendKeys("bench"); 
     element(by.buttonText("Save")).click(); 
     console.log(megha); 
     element(by.xpath("//button[@class='dropdown-toggle']")).click(); 
     console.log("dropdown clicked") 

    }); 
+0

1つのオプションは、 ')(browser.wait' – FCin

答えて

0

あなたが期待している動作は、分度器によって処理されません。フレームワーク(例:ジャスミン)によってテストされます。しかし

"Jasmine doesn't support failing early, in a single spec. The idea is to give  
    you all of the failures in case that helps figure out what is really wrong 
    in your spec" 
0

あなたはExpected Conditionsと組み合わせるbrowser.wait()を使用することができます。

browser.wait()は、約束が解決されるまで制御フローの実行をブロックし、期待される条件はすべて約束すると評価します。

あなたの場合、presenceOf()および/またはvisibilityOf()のいずれかを使用できます。

var EC = protractor.ExpectedConditions; 
var el = element(by.model("$ctrl.benchmark.name")); 
var present = EC.presenceOf(el); // wait for it to be added to DOM 
var visible = EC.visibilityOf(el); // wait for it to be visible on page 
browser.wait(EC.and(present, visible), 10000); // wait maximum of 10 seconds 
// rest of code 
+0

非同期/あなたのテストごとに待つ活字体および使用に切り替えることであろうことの後にコードを書くためにあなたが '.thenを使用する必要があるので、約束を返します。 () 'を返します。多くの待機で、それは非常にネストされます。 – FCin

+0

@FCin '.then()'は必要ありません。期待される条件は約束しています – Gunderson

+0

しかし、テストを進めるには '.then()'を使って解決する必要があります。私はあなたが 'browser.wait(EC.and(present、visible)、10000); 'という状況を話しています。'次の行は 'console.log(' abc ');'です。 '.then()'を使わない限り、 'browser.wait'が終了する前にConsole.logが実行されます。 – FCin

関連する問題