2017-07-17 18 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 downloadsフォルダにダウンロードするだけです。

ファイルをディスクから取得する代わりに、Seleniumがコンテンツをストリングに直接ロードすることは可能ですか?取得したJSONを、後でSeleniumを使用して別のサイトのフォームに送信したいと思います。

+3

@Bᴜᴅɪなぜこの質問は 'Python'タグで記されていますか? – Andersson

+0

@Anderssonそれは月曜日の午前であり、このcovfefeはまだ蹴られていない...ありがとう、私はタグを更新しました。 –

答えて

1

可能な解決策は、JSONファイルをJSON Arrayオブジェクトにロードしてから、JSONオブジェクトを反復処理して必要なデータを取得することです。

あなたは、URLからデータを読み込む必要があります:あなたは、これらのメソッドのための新しいクラスを作成することができます

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(); 
} 

、および:テキストに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; 

} 

そしてヘルパーメソッドをテストで変数を作成してデータを取得してください:

responseText = JSONAPIResponse.readJsonFromURL(
      "http://somesite.com/file.st"); 
+1

質問は具体的に "セレンの中で"これを行う方法を尋ねていますが、これがセレンで可能かどうかはわかりません。たとえそうだったとしても、私はそれがこの仕事のための適切なツールではないと思います。非セレンのアプローチでは+1です。 – mrfreester

+0

残念ながら、これはサーバーとの別個の接続を必要とするため、これは役に立たなくなります。この特定のセッションに固有のファイルで、この特定のe2eテストに使用する別のページに渡す必要があります。 – dranobob

+0

私はデータを繰り返し処理する必要はありません。今私が見つけた唯一の選択肢は、ブラウザーにとらわれないディスクからロードすることです。 – dranobob

関連する問題