Метод selenium.attachFile (String fieldLocator, String fileLocator) - PullRequest
2 голосов
/ 25 октября 2010

Строка fileLocator здесь фактически является URL-адресом файла.Я определяю URL файла для 'file: /// D: /images/pic1.jpg', но селен по какой-то причине мне не удается загрузить его из c: \ Temp (где переменная TEMP, определенная для dir, расположена длямой пользователь) добавив эту последовательность в исходное местоположение, поэтому java возвращает исключение.

com.thoughtworks.selenium.SeleniumException: java.io.FileNotFoundException: C:\Temp\D:\images\pic1.jpg (Syntax error in filename)

Это довольно предсказуемо.

Поэтому вопрос заключается в том, как сделать так, чтобы файл селена загружался непосредственно изdir, я указываю или передаю ему URL, который он не будет переписывать?

UPD

Похоже, эта вещь просто не может по какой-то причине добавитьфайлы из локальной файловой системы с использованием протокола «файл».Если я использую «http», он работает нормально.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2010

Вопрос в том, что Java 1001 * может загрузить во временный файл, потому что именно Selenium RC использует его для получения файла.Если бы мне пришлось угадывать, я бы сказал, что ваш file://D:/images/pic1.jpg блокируется каким-то механизмом контроля доступа к файлам (например, биты прав доступа, профили безопасности Java и т. Д.).Конечно, возможно, ваш скрипт работает на машине X, а Selenium RC работает на машине Y?Если это так, то файл действительно недоступен .

Selenium ожидает URL-адрес, потому что не существует правила, требующего, чтобы браузер (под управлением RC) и тестовый скрипт находились на одном и том жесистема.Некоторые наряды, такие как Sauce Labs и BrowserMob , зависят от этой возможности.

0 голосов
/ 25 октября 2010

Причина, по которой selenium пытается открыть файл в форме C: \ Temp, заключается в том, что если бы вы предоставили удаленный файл, он был бы загружен туда и после этого ссылался на локальную копию.

Вы можете попробовать что-то подобное, чтобы убедиться, что URL действительно определен правильно:

File file = new File (filePath);
selenium.attachFile(fieldLocator, file.toURL().toString());

Из того, что я знаю о методе attachFile, он работает только в Firefox.

...