Selenium - Java: как получить абсолютный путь к файлу - PullRequest
0 голосов
/ 10 января 2019

Я создал метод, в котором я получаю абсолютный путь, но при отладке я получаю неверный путь к файлу, который должен быть загружен.

Итак, метод, где я получаю абсолютный путь:

public String getFilePathByFormat(String filePath) {
        File file = new File(filePath);
        return file.getAbsolutePath();
    }

Затем я использую этот метод в общем низкоуровневом методе загрузки:

public void uploadFile(WebElement webElement, String filePath){
        try {
            webDriver.manage().timeouts().implicitlyWait(40, SECONDS);
            webElement.sendKeys(getFilePathByFormat(filePath));
        }catch (Exception e){
            printErrorAndStopTest();
        }
    }

И когда я отлаживаю и оцениваю неверный путь, получаю: E: \ accept-tests \ src \ test \ resources, НО после имени диска должна быть еще одна папка - там, где находится проект.

Что не так и почему getAbsolutePath не создает правильный путь? Спасибо

1 Ответ

0 голосов
/ 11 января 2019

В файловой системе существует два типа пути к файлу.

1) Абсолютный путь всегда начинается с корневого элемента и содержит полный список каталогов, необходимый для поиска файла. Например, «/Users/username/filename.txt» в системах Unix или «C: \ Users \ username \ filename.txt» в системах Windows.

Относительный путь не имеет какого-либо списка каталогов и должен быть объединен с другим путем для доступа к файлу. Например, username / filename.txt - это относительный путь; Обратите внимание, что в начале у него нет косой черты вперед или назад.

getAbsolutePath () возвращает абсолютный путь к файлу и работает, как показано ниже.

  1. Объект файла создается с абсолютным путем - этот метод просто возвращает путь, предоставленный для создания файла. А в случае системы Windows имя диска добавляется в начале по умолчанию, если оно отсутствует в абсолютном пути, указанном .

  2. Файловый объект создается с использованием относительного пути - здесь относительное имя пути становится абсолютным путем разрешения его в соответствии с текущим каталогом пользователя.

В этом случае передается абсолютный путь '/acceptance-tests/src/test/resources/test4.pdf'; Как упоминалось для системы Windows, сведения о диске имеют префикс с указанным путем и возвращаются как абсолютный путь.

Чтобы это работало, вы можете передать относительный путь к файлу 'src / test / resources / test4.pdf' или просто передать имя файла 'test4.pdf'.

...