Hypothèses:
- Puisque vous avez mentionné que vous utilisez Docker et puisqu'il n'y a actuellement aucune image Docker soit pour Windows (ou) OSX, votre navigateur est soit Chrome ou Firefox
- Vous utilisez une technique telle que this pour configurer l'emplacement de téléchargement par défaut de votre navigateur Chrome ou Firefox.
Vous devez d'abord déterminer à quel noeud votre grille a acheminé l'exécution de votre test. Pour ce faire, vous emploierez une technique telle que ci-dessous pour récupérer cette information (j'ai d'abord publié cela comme un here, puis écrit un blog sur ce here et finalement construit une bibliothèque appelée talk2Grid qui fournit cette capacité hors de la boîte sans vous avoir à écrire une quantité de code supplémentaire)
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;
}
}
maintenant, vous auriez les informations IP et le port du nœud Docker sur lequel votre test est en cours d'exécution.
Vous avez maintenant deux options:
- Vous téléchargez le fichier du conteneur docker en utilisant
scp
(ou)
- Vous créez un servlet personnalisé puis l'injecter dans le noeud comme expliqué here. Ensuite, vous établissez une connexion http à ce nœud en appuyant sur votre servlet, puis téléchargez le fichier sur votre machine locale. L'adresse IP et le port du nœud sont de toute façon disponibles depuis votre session.
Cela devrait vous aider avec ceci. Tout compte fait, vous pouvez également lire this blog que Mark Collins a créé qui explique pourquoi vous ne devriez pas essayer de télécharger des fichiers et si vous en avez besoin, quelle est la bonne façon de le faire.
Merci beaucoup pour l'info. J'ai utilisé le code et trouvé où mon test où était le routage à "Session a8880149-f0f4-4a33-ab5e-8296564ea087 a été acheminé à ** GridNode [IP = '172.17.0.7', Port = 5555] **". Mais je ne pouvais pas savoir exactement où le fichier est téléchargé sur la grille ou sur quel conteneur docker. Toute idée où serait l'emplacement de téléchargement par défaut pour un webdriver distant – nurav
Il n'y a pas d'emplacement par défaut pour le téléchargement du fichier que le webdriver décide. C'est toujours le navigateur qui est par défaut à un endroit. Dans ma réponse, j'ai fourni des liens vers des articles qui vous montrent comment contrôler l'emplacement. Donc, vous pouvez utiliser cela pour forcer le navigateur à télécharger à votre choix d'emplacement et ensuite l'obtenir à partir de là. Si ma réponse m'a aidé, je vous demanderais de bien vouloir l'aider à l'accepter. –