2016-06-01 18 views
0

私はオートメーションフレームワークで作業していますが、テストデータ、要素ロケータ、およびページオブジェクトを格納するための代替方法を探しています。JSONファイルを読み込んで、JavaでJSONファイルに書き込む(セレンWebdriverを使用)

オートメーションを担当している私の友人の1人は、jsonファイルを使用してすべてのデータを簡単かつ高速に読み書きすることができます。また、維持管理も簡単です。彼らは言語としてルビーを使用しています。

私はこれを達成するために、&のセレンを使用して同じことができるかどうかを知りたかったのですか?

私はこれについてgoogleを検索しました。それはgoogleから "gson"というライブラリがあるようですが、セレンを使ってどのように使用するかはわかりません。

あなたの意見をお寄せください。

ありがとうございました!

+0

として印刷されます。 jsonとして使用するデータの例と、Java Sereniumテストでの使用方法の例を示してください。そうでなければ、他にどんな援助がありますか? – user2272115

+0

あなたのコメントのためのuser2272115ありがとうございます - 私は例のない質問を追加するときは、その一般的な質問と任意の助けが私が始めるのに良いことを意味します。ありがとう!私はすぐにデータを共有します! –

答えて

0

JSONファイルに要素ロケータを含めることはできません。ページオブジェクトモデルに従って、すべての要素をJavaクラスに含めています。しかし、JSONファイルからテストデータを読み込むことは非常に簡単です。私はこれで周りの混乱しましたので、それはしばらくしているが、私は(私はまだJSONオブジェクト/ファイルを生成するために使用します)JSON Simpleを使用してこのようなものは、ファイルを読み込むことでした

protected JSONObject getDataFile(String dataFileName) { 
    String dataFilePath = "src/test/resources/"; 
    JSONObject testObject = null; 

    try { 
     FileReader reader = new FileReader(dataFilePath + dataFileName);       
     JSONParser jsonParser = new JSONParser(); 
     JSONObject jsonObject = (JSONObject) jsonParser.parse(reader); 
     testObject = (JSONObject) jsonObject; 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    return testObject; 
} 

あなたが持ったらJSONオブジェクトでは、JSONシンプルはそれとやりとりして値を取得するいくつかの方法を提供します。私はGsonとしばらく前に遊んだし、それはかなり似ていると思う。

データファイルがどのように構造化されているかわかりませんが、テストケース名を表すキーストリングがあり、値は実際のデータと他のキーと値のペアを含むjsonオブジェクトでしたそのデータをTestNGデータプロバイダに供給しました。それがあなたの設定に似ているなら、私はそのコードを共有することができます。

編集:私は、私は唯一のログやレポート作成のために、私が正しくリコール場合は、その使用と信じてここで、除去することができ@dataProvider

public Object[][] getTestScenarios(String dataFileName, String testCaseName) { 
    JSONArray testCase = (JSONArray) getDataFile(dataFileName).get(testCaseName); 
    List<JSONObject> testScenarioArray = new ArrayList<JSONObject>(); 

    for (int i = 0; i < testCase.size(); i++) { 
     testScenarioArray.add((JSONObject) testCase.get(i)); 
    } 

    Object[][] dataProviderArray = new Object[testScenarioArray.size()][]; 
    for (int scenario = 0; scenario < testScenarioArray.size(); scenario++) { 
     String scenarioName = null; 

     if ((String) testScenarioArray.get(scenario).get("scenario") != null) { 
      scenarioName = (String) testScenarioArray.get(scenario).get("scenario"); 
     } else { 
      scenarioName = "No scenario name specified"; 
     }; 
     dataProviderArray[scenario] = new Object[] { scenarioName, (JSONObject) testScenarioArray.get(scenario) }; 
    } 
    return dataProviderArray; 
} 

シナリオ名のものが使用する方法です。私がJSONArrayとしてそれを持っていて、このようにコード化された理由は、単一のテストケースが異なるデータを持つ複数のシナリオを持つ配列を持つ可能性があるからです。テストにいくつのシナリオがあるかを気にする必要はありませんでした。

+0

あなたの答えに@pydeありがとう - 私はパーサーを実装し、すぐにそれを読んでいる方法に関するデータを共有します。 –

+0

コードPydeを共有してください。私もTestngを使用しています。 –

+0

私の応答が遅れて申し訳ありません。私と一緒に裸で、私はそれを一瞬で持っていきます。 – pyde

0

DBからJSON配列を読み込み、JSON配列からJSONオブジェクトのリストを作成しました。

[{ 
    "index": "data", 
    "type": "message", 
    "sum": 
    { 
     "message": "HELLO", 
    }, 
}, { 
    "index": "data", 
    "type": "message", 
    "sum": 
    { 
     "message": "HELLO123", 
    } 
}] 

それは文字列形式でDBから収集されるが、それは角括弧を有するように配列され:[{Json1}, {Json2}]次のように

アレイが見えます。

String data = "ArrayFromDB"; 
JSONArray jsonArr = new JSONArray(data); 
List<String> listJSON = new ArrayList<String>(); 

for (int i = 0; i < jsonArr.length(); i++) 
{ 
    listSMSJSON.add(jsonArr.getJSONObject(i).getJSONObject("sum").getString("message")); 
} 

System.out.println(listJSON); 

listJSONはすでにgsonはJSONを扱うための良いJavaライブラリで述べたように、** ANY ** JavaプロジェクトでJSONを使用することが可能である。もちろん、[HELLO, HELLO123]

関連する問題