2017-03-09 10 views
0

必要な要素がすべてページに存在するかどうかを確認するテストを作成しようとしています。jsonから動的パスを取得するには?

{ 
    "perfTest": { 
     "input":"abc", 
     "outputs":["a","b","c"], 
     "elemAndXpath": ["Login","password","submit"] 
     } 
    } 
} 

私のテストはこれです:私は、右のNOEは、次のようになりますJSONファイルの名前json.dataを持っているそれらのすべてがで類似している私のロケータを見つけることができるならば今、この作品

it("should check that required elements are present", function() { 
     var elemNames = data.perfTest.elemAndXpath); 
     elemNames.forEach(function(elemName){ 
      //search on the page that the specified elem is present 
      expect(element(by.xpath("//div[.='" + elemName + "']")).isPresent()).toBe(true); 
     }); 
    }); 

パス。 jsonファイルから使用するロケータパスを取得できるようにするために、このテストを行う必要があります。 JSONファイルは次のようになります:

{ 
    "perfTest": { 
     "input":"abc", 
     "outputs":["a","b","c"], 
     "elemAndXpath": { 
      "Login":"by.id('login')", 
      "password":"by.id('pass')", 
      "submit":"by.xpath(//button)" 
     } 
    } 
} 

このJSONファイルのテストを書くことができません。問題は、最後のキーの動的な性質によるものです。これで私を助けてください。

答えて

1

あなたの問題は、要素に文字列を渡していることだと思います。これを試してみてください:

var data = { 
    "perfTest": { 
    "input":"abc", 
    "outputs":["a","b","c"], 
    "elemAndXpath": { 
     "Login":"by.id('login')", 
     "password":"by.id('pass')", 
     "submit":"by.xpath(//button)" 
    } 
    } 
} 

for(key in data.perfTest.elemAndXpath){ 
    expect(element(eval(data.perfTest.elemAndXpath[key]))).isPresent()).toBe(true) 
} 
+0

実際にはありません。私が書いたテストは、「elemAndXpath」のすべてのキーを持っています。今、私はすべての鍵を反復して、それに対応する価値を得たいと思っていますが、それは私のために働きません。 – Ravi

+0

あなたが何かのためにキーを必要としない限り、それらをドロップして、by.xの文字列を配列のアイテムとして置くことができます。それ以外の場合は、オブジェクトに対してforループを実行し、同じ処理を行います。 – jdgower

+0

はい、鍵が必要です。 forループを試してみました。Objectを使ってすべてのキーを取得しました。私はキーを反復するためにループを使用しましたが、値を取得できませんでした – Ravi

関連する問題