1

我正在使用“selenium2”驱动程序并尝试测试文件上传表单输入字段,但出现错误

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');
4

4 回答 4

5

你定义了files_path吗?我的在 behat.yml 中。如果你已经定义了这个,你只需要提供应该存在于定义的文件夹中的文件名。

  default:
    context:
      class:  'FeatureContext'
    extensions:
      Behat\MinkExtension\Extension:
        files_path: '/var/www/project/public/images'
        base_url:  'https://local.dev'
于 2014-04-28T15:10:21.657 回答
3

此处,此代码为 behat 和 mink 的默认代码。尝试这个。

/**
 * 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);
}
于 2013-09-05T12:48:09.700 回答
1

在指定文件夹之前尝试使用 %paths.base%。就我而言,我将其称为“媒体”,它位于功能文件夹中。

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);
}
于 2016-08-19T16:43:14.313 回答
-2

这是您的代码可能无法正常工作的一个非常简单的原因,但是您的目录斜杠错误的方式。D:的使用表示windows,你使用的斜杠是/(*nix, mac, etc)...

所以尝试更换

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

    $element->attachFile('D:\looks.jpg');
于 2015-08-14T15:13:55.133 回答