не удается прикрепить файл (файл csv) в поле ввода с помощью Behat Mink extension Framework

Я хочу прикрепить файл CSV к полю ввода типа «файл» с помощью Behat Framework (расширение Mink).

HTML поля ввода ---- input id = "edit-ab-csv-file" class = "form-file" type = "file" size = "60" name = "files [ab_csv_file]">

1-й метод. Мы пробовали. Я пробовал использовать метод attachfile () в Driverinterface.

/**
 * 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);
}


}

2-й метод - мы пытались использовать Java-скрипт

$jscript = "document.getElementById('edit-ab-csv-file').value='//home//developer//build//tools//behat//Invaliduploadfile.csv';";
  $this->getSession()->getDriver()->executeScript($jscript);

У меня есть исключение, говорящее

 The operation is insecure. (WARNING: The server did not provide any stack trace information)
      Command duration or timeout: 10 milliseconds

может ли кто-нибудь помочь решить эту проблему.


person user84035    schedule 28.06.2013    source источник


Ответы (1)


У меня работает первый метод. Не забудьте указать полный путь к файлу или воспользоваться настройкой конфигурации Mink files_path.

Проверьте это сообщение на форуме: https://groups.google.com/forum/#!topic/behat/vxZAssi2Nf8

Mink требует абсолютного пути для загрузки файла, но очевидно, что этот путь, вероятно, не будет работать в других средах. Вместо этого вы можете предоставить свойство file_paths в свой файл конфигурации Yaml:

расширения:

Behat\MinkExtension\Extension:

    files_path: "path/to/files"
person sanzante    schedule 22.09.2013
comment
В Behat 3 вы можете использовать %paths.base%, чтобы сделать ваш каталог относительно того, откуда вы запускаете свои тесты. Например: files_path: %paths.base%/app/Test/Behat/Files - person DanielM; 09.12.2014
comment
В Behat 2 вы можете использовать %behat.paths.base% для того, что предложил Даниэль. - person Greg; 17.03.2016