在Java

时间:2016-01-07 10:15:38

标签: java arrays string file selenium

我有这个代码

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

此代码返回文件夹F:\ gals中所有文件的位置数组,我尝试在selenium代码中使用此位置

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

我发现错误

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

所以我认为我必须将listOfFiles []转换为String数组,请告诉我简单的方法。谢谢

6 个答案:

答案 0 :(得分:12)

您无需转换整个数组。只需拨打File的{​​{1}}方法:

getAbsolutePath()

但是如果你想转换整个数组,这里有 Java 8 方法(由@RemigiusStalder简化):

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

答案 1 :(得分:7)

只需拨打File.list()即可。

答案 2 :(得分:3)

我认为,您不需要将File []转换为String []

只需使用您的文件阵列:

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

或者,如果您想发送完整的文件路径:

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

答案 3 :(得分:2)

如果您只想要名字:

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

如果您需要完整路径:

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

答案 4 :(得分:2)

另一种方式:这只是一个将File数组转换为String数组的静态辅助方法:

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

答案 5 :(得分:1)

为什么你不能尝试这个?

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