[英]Reading JSON file and Writing into a JSON file in Java using selenium Webdriver
我正在開發一個自動化框架,並且正在尋找excel的替代品來存儲測試數據,元素定位符和頁面對象。
因此,我的一位從事自動化工作的朋友正在使用json文件存儲所有數據,因為它易於讀取和寫入數據,而且速度更快,而且易於維護。 他們使用紅寶石作為語言。
所以我想知道我們是否可以使用java和selenium來做到這一點?
我已經在Google上搜索了它,看起來好像有一個來自Google的名為“ gson”的庫,但是沒有一個庫顯示如何使用硒來使用它。
請分享您對此的想法。
謝謝!!
我不能說在JSON文件中包含元素定位符,因為我遵循頁面對象模型並將所有那些元素包含在java類中。 但是,從JSON文件讀取測試數據非常容易。 自從我搞混以來已經有一段時間了,但是我使用了JSON Simple (我仍然使用它來生成JSON對象/文件),並且做了類似的事情來讀取文件:
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 simple提供了幾種與之交互並獲取值的不同方法。 我和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並以這種方式進行編碼的原因是,一個測試用例可以具有一個數組,其中包含具有不同數據的多個方案。 不想測試必須關心有多少種情況。
我已經從數據庫中讀取了一個JSON數組,並從JSON Array中列出了一個JSON對象。
該數組如下所示:
[{
"index": "data",
"type": "message",
"sum":
{
"message": "HELLO",
},
}, {
"index": "data",
"type": "message",
"sum":
{
"message": "HELLO123",
}
}]
它以STRING形式從DB收集,但是由於具有SQUARE [{Json1}, {Json2}]
: [{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打印為[HELLO, HELLO123]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.