J'ai Selenium Grid sur une machine distante avec IP. Un de mes cas de test doit télécharger le fichier et en assertion, je veux comparer le nom du fichier téléchargé.Dans un autre cas de test, je dois également importer le fichier dans l'application à partir de Windows. Comment faire ça en Java? Selenium Grid est sur Windows Server 2008.

0
robmax 6 avril 2017 à 20:01

2 réponses

Meilleure réponse

Autant que je sache, ce n'est pas possible avec le sélénium seul. Vous pourrez peut-être obtenir les journaux du navigateur, mais ce que je fais, c'est activer l'accès aux fichiers sur un serveur partagé et vérifier que le fichier y est téléchargé. J'ai d'abord défini le répertoire de téléchargement de Chrome:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "\\remote-ip\path\to\download\directory");
options.setExperimentalOption("prefs", prefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new RemoteWebDriver(new URL("http://gridhubhost:4444/wd/hub"), capabilities);

Ensuite, après le test, le navigateur télécharge le fichier, je vérifie le système de fichiers sur le serveur distant:

File downloadedFile = new File("\\remote-ip\path\to\download\directory\file");
assertEquals(downloadedFile.getName(), "expected-name");

[modifier]: vous feriez peut-être mieux d'affirmer que le fichier existe, par exemple:

assertTrue(downloadedFile.exists());
1
Mark Lapierre 29 mars 2019 à 22:29

Vous pouvez vérifier si le fichier téléchargé existe dans le chemin en utilisant java.io.File:

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { 
   Sustem.out.printLn("File is downloaded");
}

De plus, si vous souhaitez importer, vous devrez vérifier s'il existe un champ d'entrée modifiable pour l'importation de fichiers, si oui, vous pouvez directement utiliser sendkeys comme ci-dessous:

  driver.findElement(By.xpath("upload input path")).sendKeys("C:/Users/1.pdf");

Sinon, vous devrez utiliser la classe AutoIt ou Robot si le lien de téléchargement ouvre les boîtes de dialogue Windows.

0
FAR11VEN 7 avril 2017 à 07:22