Selenium - Java: как получить абсолютный путь к файлу

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

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

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 не строит правильный путь? Спасибо

Может быть полезно опубликовать значение filePath ...

Ben R. 10.01.2019 14:59

Значение filePath я указываю как строку в классе страницы: public void uploadNeededAttachmentAndSetType () {uploadFile ("/ accept-tests / src / test / resources / test4.pdf") ‌; }

Andrew Chichick 10.01.2019 16:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
4 378
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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.

Спасибо за описание. Я пробовал указать относительный путь или просто оставить имя файла, но это не сработало. Также я пробовал использовать точки: ./acceptance-tests/src/test/resources/test4.pdf, но он дублирует папку, перед которой установлена ​​точка: E:/AutomationsTests/acceptance-tests/./acceptance-tests/src/‌​test/resources/test4‌​.pdf - результат оценки во время отладки. Папка / приемочные испытания дублируется в пути

Andrew Chichick 11.01.2019 10:57

Если я прав, «приемочные испытания» - это имя папки вашего проекта. Удалите это имя, а также точку из пути к входному файлу. Ваш ввод должен быть src / test / resources / test4.pdf.

arunkvelu 11.01.2019 13:54

Когда я удаляю имя папки проекта и расставляю точки, тест не проходит. Когда я отлаживаю и оцениваю getFilePathByFormat(filePath), результатом будет E: /src/test/resources/test4.pdf, что неверно

Andrew Chichick 11.01.2019 14:40

Проблема была в "/" перед "src". Удалил и тесты запускаются. Спасибо

Andrew Chichick 17.01.2019 13:17

Другие вопросы по теме