如何从Selenium中的URL打开文本文件而不是下载?

时间:2017-07-17 16:37:50

标签: java selenium

我正在使用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提交到另一个站点上的表单。

1 个答案:

答案 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");