我正在使用Selenium并试图获取文本文件的内容而不将其下载到下载文件夹。
import org.openqa.selenium.WebDriver;
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
url = "http://somesite.com/file.st";
driver.get(url);
}
该文件是纯文本文件,只有JSON,没有标题或标记。现在上面的代码,只需将文件下载到默认的chrome下载文件夹。
Selenium是否可以将内容直接加载到String中,而不是要求从磁盘中检索文件?我想稍后使用Selenium将检索到的JSON提交到另一个站点上的表单。
答案 0 :(得分:1)
这是一个可能的解决方案,您可以将JSON文件加载到JSON Array对象中,然后您可以迭代JSON对象以获取所需的数据。
您需要从网址中读取数据:
public static JSONArray readJsonFromURL(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is,
Charset.forName("UTF-8")));
String jsonText = readResponse(rd);
// System.out.println("response: " + jsonText);
JSONArray jsonData = new JSONArray(jsonText);
is.close();
return jsonData;
}
JSON到文本的辅助方法:
public static String readResponse(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
然后,您可以为这些方法创建一个新类,然后在测试中创建一个变量来获取数据:
responseText = JSONAPIResponse.readJsonFromURL(
"http://somesite.com/file.st");