Java /Selenium — неверен синтаксис имени файла, имени каталога или метки тома (java.io.IOException)

#java #selenium #selenium-webdriver

#java #selenium #selenium-webdriver

Вопрос:

Я написал простой скрипт selenium для захвата скриншота, и по какой-то причине этот скрипт выдает исключение:

java.io.IOException: неверен синтаксис имени файла, имени каталога или метки тома

 public class ScreenshotUtil {

    WebDriver driver;

    public ScreenshotUtil(WebDriver driver) {
        this.driver = driver;
    }

    public String getScreenShot(String fileName) {
        SimpleDateFormat dFormat = new SimpleDateFormat("dd-MM-yyy HH-mm-ss");
        Date date = new Date();
        dFormat.format(date);
        TakesScreenshot ts = (TakesScreenshot) driver;
        File source = ts.getScreenshotAs(OutputType.FILE);
        String path = "./Screenshots/"   fileName   "_"   date   ".png";
        File destination = new File(path);
        try {
            FileUtils.copyFile(source, destination);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return path;
    }
}
  

Комментарии:

1. dformat.format(date) возвращает String (т.Е. "12-10-2020 22-04-04" ), который вы не используете, Ваша path строка была date.toString() (т.Е. "Mon Oct 12 22:04:04 GMT 2020" ) Добавлена к ней ранее ".png" .

2. Как мне это исправить? Есть предложения?

3. String path = "./Screenshots/" fileName "_" dformat.format(date) ".png"; . Ваша проблема может быть вызвана пробелом в вашем конечном пути из вашей строки формата даты ( "dd-MM-yyy HH-mm-ss" ), возможно, попробуйте заменить пробел на uderscore или дефис (т.Е. "dd-MM-yyy_HH-mm-ss" ).

4. Отлично! это сработало — спасибо!

Ответ №1:

Вы используете пути в стиле Unix в Windows.

Измените текущий разделитель пути / File.separator на, чтобы обеспечить кроссплатформенное выполнение вашего кода.

Быстрое исправление вашего кода:

 String path = "."   File.separator   "Screenshots"   File.separator   fileName   "_"   date   ".png";
  

Комментарии:

1. Я внедрил ваше исправление, но по-прежнему безуспешно … все еще вижу то же исключение java.io.IOException: синтаксис имени файла, имени каталога или метки тома неверен