gpt4 book ai didi

java - 使用 selenium Webdriver 在 Java 中读取 JSON 文件并写入 JSON 文件

转载 作者:行者123 更新时间:2023-12-02 03:34:44 24 4
gpt4 key购买 nike

我正在开发一个自动化框架,并且正在寻找 Excel 的替代方案来存储测试数据、元素定位器和页面对象。

所以我的一位从事自动化工作的 friend 正在使用 json 文件来存储所有数据,因为它在读写数据方面更容易、更快,而且也很容易维护。他们使用 ruby​​ 作为语言。

所以我想知道我们是否可以使用 java 和 selenium 来实现同样的目的?

我在谷歌上搜索了这个,看起来谷歌有一个名为“gson”的库,但没有一个库展示如何使用 selenium 来使用它。

请分享您对此的想法。

谢谢!!

最佳答案

我无法谈论在 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 并以这种方式编码的原因是,单个测试用例可以拥有一个包含多个场景的数组,这些场景具有不同的数据。不希望测试必须关心有多少场景。

关于java - 使用 selenium Webdriver 在 Java 中读取 JSON 文件并写入 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37575632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com