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 など) です...

なので交換してみる

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

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