2016-01-07 9 views
6

Ich habe diesen CodeDatei konvertieren [] zu String [] in Java

File folder = new File("F:\\gals"); 
File[] listOfFiles = folder.listFiles(); 

dieser Code eine Reihe von Positionen aller Dateien im Ordner F zurück: \ gals, und ich versuchte, diese Position in Selen zu verwenden

Code
driver.findElement(By.id(id1)).sendKeys(listOfFiles[1]); 

und ich sehe Fehler

The method sendKeys(CharSequence...) in the type WebElement is not applicable for the arguments (File) 

so ich glaube, ich listOfFiles konvertieren müssen [] zu String-Array, plz mir sagen, simpl Der Weg, dies zu tun. Danke

+0

Was möchten Sie an Selenium senden? Pfad der Datei oder des Dateiinhalts? listOfFiles [] -> String [] ist unklar, bis wir wissen, was Sie erreichen wollen. – dubes

+0

Ich möchte Datei hochladen, Datei hochladen Ich muss Dateipfad senden – carol

Antwort

11

Sie müssen das ganze Array nicht konvertieren. Rufen Sie einfach File ‚s getAbsolutePath() Methode:

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getAbsolutePath()); 

Aber wenn Sie das gesamte Array konvertieren wollen, hier ist die Java 8 Weg, dies zu tun (vereinfacht durch @RemigiusStalder):

String listOfPaths[] = Arrays.stream(listOfFiles).map(File::getAbsolutePath) 
     .toArray(String[]::new); 
+1

Java8-Code könnte vereinfacht werden zu: 'String listOfPaths [] = Arrays.stream (listOfFiles) .map (Datei :: getAbsolutePath) .toArray (String []: : neu); ' –

3

ich glaube, Sie brauchen nicht Datei [] in String konvertieren []

Sie Ihre Datei-Feld auf diese Weise verwenden:

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getName()); 

oder, wenn Sie Pfad vollständige Datei senden möchten:

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getPath()); 
1

Warum können Sie das nicht versuchen?

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getName()); 
+0

Weil es nicht funktionieren würde. – EJP

+0

Warum würde es nicht funktionieren? Ich denke, es sollte funktionieren – carol

2

Wenn Sie nur die Namen wollen:

String [] fileNames new String[listOfFiles.length]; 
    for (int i = 0; i < listOfFiles.length; i++) { 
    fileNames[i] = listOfFiles[i].getName(); 
} 

Wenn Sie vollständigen Pfad benötigen:

String [] fileNames new String[listOfFiles.length]; 
    for (int i = 0; i < listOfFiles.length; i++) { 
    fileNames[i] = listOfFiles[i].getPath(); 
} 
2

Ein anderer Weg: das ist nur eine statische Hilfsmethode Datei-Array in String zu konvertieren Array:

private static String[] convertFromFilesArray(File[] files){ 
     String[] result = new String[files.length]; 
     for (int i = 0; i<files.length; i++){ 
      result[i] = files[i].getAbsolutePath(); 
     } 

     return result; 
    } 
7

Nur Rufen Sie stattdessen File.list() an.

+0

@ ThiagoPorciúncula So wird 'listFiles()'. Der einzige Unterschied besteht darin, welcher Datentyp zurückgegeben wird. – EJP

+0

@ ThiagoPorciúncula Ich kann nur vorschlagen, dass Sie weiterlesen: ['ein Array von File-Objekten wird zurückgegeben, eins für jede Datei * oder Verzeichnis * im Verzeichnis'] (https://docs.oracle.com/javase/7/docs /api/java/io/File.html#listFiles()) [Hervorhebung hinzugefügt]. – EJP