2

我想使用 Behat 框架(Mink 扩展)将 CSV 文件附加到“文件”类型的输入字段中。

输入字段的html---- input id="edit-ab-csv-file" class="form-file" type="file" size="60" name="files[ab_csv_file]">

第一种方法我们试过我试过在 Driverinterface 中使用 attachfile() 方法

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


}

第二种方法——我们尝试使用 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

任何人都可以请帮助解决这个问题。

4

1 回答 1

0

第一种方法对我有用。不要忘记使用文件的完整路径或使用 files_path Mink 配置设置。

检查此论坛帖子: https ://groups.google.com/forum/#!topic/behat/vxZAssi2Nf8

Mink 需要一个绝对路径来上传文件,但显然该路径在其他环境中可能不起作用。相反,您可以为 Yaml 配置文件提供“file_paths”属性:

扩展:

Behat\MinkExtension\Extension:

    files_path: "path/to/files"
于 2013-09-22T17:55:52.503 回答