2013-09-04 4 views
1

Я использую «selenium2» водитель и пытается проверить поле формы ввода загрузки файла, но получаю ошибку, какBehat Прикрепленный файл не работает

Exception thrown by (//html/descendant-or-self::*[@id = 'ImageID'])[1] 
'D:/looks.jpg' does not exist on the file system 

Мой код в FeatureContex.php как ниже

>  $page = $this->getSession()->getPage(); 
>  $element = $page->find('css', '#ImageID'); 
>  $element->attachFile('D:/looks.jpg'); 

ответ

3

Здесь этот код является кодом поведения по умолчанию и норкой. попробуй это.

/** 
* Attaches file to field with specified id|name|label|value. 
* 
* @When /^(?:|I)attach the file "(?P<path>[^"]*)" to "(?P<field>(?:[^"]|\\")*)"$/ 
*/ 
public function attachFileToField($field, $path) 
{ 
    $field = $this->fixStepArgument($field); 

    if ($this->getMinkParameter('files_path')) { 
     $fullPath = rtrim(realpath($this->getMinkParameter('files_path')), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$path; 
     if (is_file($fullPath)) { 
      $path = $fullPath; 
     } 
    } 

    $this->getSession()->getPage()->attachFileToField($field, $path); 
} 
+0

Это также показывает такая же ошибка, как «D: /looks.jpg», не существует файловая система « –

+1

Тогда должна быть ошибка с предоставленным вами способом. попробуйте сыграть с путями. например Mycomputer/D: /looks.jpg и т. д. –

5

Вы уже описали file_path? Моя находится в behat.yml. Если вы определили это, вы должны указать только имя файла, которое должно существовать в указанной папке.

default: 
    context: 
     class: 'FeatureContext' 
    extensions: 
     Behat\MinkExtension\Extension: 
     files_path: '/var/www/project/public/images' 
     base_url: 'https://local.dev' 
+1

Вы также можете определить относительный путь: files_path: "./" – satyr

-2

Это очень простая причина, по которой ваш код может не работать, но у вас есть каталог, который сбрасывает неправильный путь. Использование D: показывает окна и слэш вы использовали это/(* Никс, макинтош и т.д.) ...

Так попробуйте заменить

$element->attachFile('D:/looks.jpg'); 

с

$element->attachFile('D:\looks.jpg'); 
1

Попробуйте использовать% paths.base%, прежде чем указывать свою папку. В моем случае я назвал его «media», и он находится в папке с функциями.

default: 
    extensions: 
    Behat\MinkExtension: 
     files_path: "%paths.base%/media/" 

С помощью функции я указать имя файла т.е.

When I add cover art "wrongCoverArt.jpg" 

И получив имя файла, как это:

class TypeMeContext extends RawMinkContext implements Context, SnippetAcceptingContext 
... 
/** 
* @When I add cover art :arg1 
*/ 
public function iAddCoverArt($arg1) 
{ 
    $this->uploader->addCoverArt($arg1); 
} 

и

class Whatever extends Page 
... 
/** 
* @param string $fileName 
*/ 
public function addCoverArt($fileName) 
{ 
    $id = 'cover-art-uploader'; 
    $this->attachFileToField($id, $fileName); 
} 
Смежные вопросы