0

を読んだことは、私のシナリオです:セレングリッド上のExcelファイルをダウンロードし、ここでそれを

我々はジェンキンスからドッキングウィンドウコンテナ(Linuxマシン)で設定したセレングリッド上の私たちのセレンテストスイートを実行します。

私のテストでは、エクスポートオプションをクリックすると、Excelファイルがセレングリッドにダウンロードされます。

問題:

私は(毎回テストはセレングリッド内の異なるノードで実行する場合があります)ダウンロードしたファイルの場所を見つけることができません。

私は何を期待してい:

誰かが私を助けることができ、ファイルの場所を見つけて、私はの一つに、そのファイルを移動することができますので、もし私がLinuxボックスにExcelファイルを開くことができないと思いますする方法SFTPの場所私はSFTPに接続することができますし、検証のためのコンテンツを読むことができます。

おかげ

答えて

0

仮定:

  • あなたがドッカーを使用しているし、Windows(または)OSXのいずれかにはドッカー画像が現在存在しないため、お使いのブラウザはクロムまたはFirefox
  • のいずれかである言及したので、
  • thisなどの技術を使用して、ChromeまたはFirefoxブラウザのデフォルトのダウンロード場所を設定しています。

まず、テスト実行の対象となったノードがどのノードになっているかを把握する必要があります。これを行うには、以下のようなテクニックを使用します(私は元々これを要点としてhereとして投稿しました。このhereについてのブログを書き、最後にtalk2Gridというライブラリを構築しました。あなたは今、あなたはあなたのテストが実行されているドッカーノードのIPおよびポート情報を持っているでしょう

public class GridInfoExtracter { 

private static String[] getHostNameAndPort(String hostName, int port, 
    SessionId session) { 
    String[] hostAndPort = new String[2]; 
    String errorMsg = "Failed to acquire remote webdriver node and port info. Root cause: "; 

    try { 
    HttpHost host = new HttpHost(hostName, port); 
    DefaultHttpClient client = new DefaultHttpClient(); 
    URL sessionURL = new URL("http://" + hostName + ":" + port + "/grid/api/testsession?session=" + session); 
    BasicHttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST", sessionURL.toExternalForm()); 
    HttpResponse response = client.execute(host, r); 
    JSONObject object = extractObject(response); 
    URL myURL = new URL(object.getString("proxyId")); 
    if ((myURL.getHost() != null) && (myURL.getPort() != -1)) { 
    hostAndPort[0] = myURL.getHost(); 
    hostAndPort[1] = Integer.toString(myURL.getPort()); 
    } 
    } catch (Exception e) { 
    logger.log(Level.SEVERE, errorMsg, e); 
    throw new RuntimeException(errorMsg, e); 
    } 
    return hostAndPort; 
} 

private static JSONObject extractObject(HttpResponse resp) throws IOException, JSONException { 
    BufferedReader rd = new BufferedReader(new InputStreamReader(resp.getEntity().getContent())); 
    StringBuffer s = new StringBuffer(); 
    String line; 
    while ((line = rd.readLine()) != null) { 
    s.append(line); 
    } 
    rd.close(); 
    JSONObject objToReturn = new JSONObject(s.toString()); 
    return objToReturn; 
} 
} 

)コードの余分な量を記述すること。

あなたは今、2つのオプションがあります。あなたは、カスタムサーブレットを構築し、hereが説明したようにノードに注入scp(または)

  • を使用してドッキングウィンドウコンテナからファイルをダウンロード

    1. を。次に、サーブレットを押してこのノードにhttp接続を行い、ローカルマシンにファイルをダウンロードします。ノードのIPとポートは、セッションから利用可能です。

    これはあなたに役立ちます。

    あなたはまた、ファイルをダウンロードしようとすべきではない理由と、必要な場合には、それを行う正しい方法について、マークコリンズが作成したthisブログを読むこともできます。

  • +0

    ありがとうございました。私はこのコードを使って、どこのテストで "セッションa8880149-f0f4-4a33-ab5e-8296564ea087が** GridNode [IP = '172.17.0.7'、Port = 5555] **にルーティングされたのかを理解しました。しかし、私は正確にどこのファイルがグリッド上にダウンロードされているのか、どのドッキング・コンテナにダウンロードされているのか分かりませんでした。リモートWebdriverのデフォルトのダウンロード場所はどこですか? – nurav

    +0

    webdriverが決定するファイルダウンロードのデフォルトの場所はありません。そのブラウザは常にデフォルトの場所になっています。私の答えでは、場所を制御する方法を示す記事へのリンクも提供しています。だから、あなたはそれを使って、ブラウザをあなたの選択した場所にダウンロードしてからそこから得ることができます。私の答えが助けられたら、私はあなたにそれを受け入れるのを助けてくれるようお願いします。 –

    関連する問題