2017-07-17 258 views
0

我正在使用Selenium并试图获取文本文件的内容,而无需将其下载到下载文件夹。如何从Selenium中的URL中打开文本文件而不是下载?

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是否可以直接将内容加载到字符串中,而不需要从磁盘检索文件?我希望稍后将提取的JSON提交到使用Selenium的另一个站点上的表单。

+3

@Bᴜᴅɪ,为什么用“Python”标记标记此问题? – Andersson

+0

@Andersson,因为它是周一早上,这个广告还没有被踢过......谢谢,我已经更新了标签。 –

回答

1

这是一个可能的解决方案,您可以将JSON文件加载到JSON Array对象中,然后您可以遍历JSON对象以获取所需的数据。

您将需要阅读从URL数据:

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"); 
+1

虽然问题具体问到如何做到这一点“在硒”,我不知道这是否可能在硒。即使是这样,我不认为这将是这份工作的正确工具。 +1为非硒方法。 – mrfreester

+0

不幸的是,这不会'工作,因为它需要一个单独的连接到服务器。该文件是特定于那个特定的会话,然后我需要传递给另一个页面,将用于此特定的e2e测试。 – dranobob

+0

我不需要遍历数据,只需传递它即可。现在我发现的唯一选择是从磁盘加载它,这不是浏览器不可知的。 – dranobob

相关问题