Я создал метод, в котором я получаю абсолютный путь, но при отладке получаю неверный путь к файлу, который должен быть загружен.
Итак, метод, по которому я получаю абсолютный путь:
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 я указываю как строку в классе страницы: public void uploadNeededAttachmentAndSetType () {uploadFile ("/ accept-tests / src / test / resources / test4.pdf") ; }




В файловой системе есть два типа пути к файлу.
1) Абсолютный путь всегда начинается с корневого элемента и содержит полный список каталогов, необходимых для поиска файла. Например, '/Users/username/filename.txt' в системах Unix или 'C: \ Users \ username \ filename.txt' в системах Windows.
Относительный путь не имеет списка каталогов и должен быть объединен с другим путем для доступа к файлу. Например, username / filename.txt - это относительный путь; Обратите внимание, что в начале у него нет прямой или обратной косой черты.
getAbsolutePath () возвращает абсолютный путь к файлу и работает, как показано ниже.
Файловый объект создается с абсолютным путем - этот метод просто возвращает путь, указанный для создания файла. И в случае системы Windows имя диска добавляется в начале по умолчанию, если оно не присутствует в указанном абсолютном имени пути..
Файловый объект создается с использованием относительного пути - здесь имя относительного пути становится абсолютным путем сопоставления его с текущим каталогом пользователя.
В этом случае передается абсолютный путь /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 - результат оценки во время отладки. Папка / приемочные испытания дублируется в пути
Если я прав, «приемочные испытания» - это имя папки вашего проекта. Удалите это имя, а также точку из пути к входному файлу. Ваш ввод должен быть src / test / resources / test4.pdf.
Когда я удаляю имя папки проекта и расставляю точки, тест не проходит. Когда я отлаживаю и оцениваю getFilePathByFormat(filePath), результатом будет E: /src/test/resources/test4.pdf, что неверно
Проблема была в "/" перед "src". Удалил и тесты запускаются. Спасибо
Может быть полезно опубликовать значение filePath ...