phpbehatminksahi

Mink/behat file attach


I am using behat/mink/sahi. I am trying to attach file to an input type element using the xpath because i can not locate it with the normal function that behat already has. My full_path is already in the behat.yml file

   /**
     * @When I attach file
     */
    public function iAttachFile()
    {
        $page = $this->getSession()->getPage();
        $element = $page->find('xpath', "//input[@data-field-type='logo']");
        $element->attachFile('full_path');
    }

Solution

  • attachFile doesn't know to get the full_path from behat.yml alone.

    Make sure you have the latest "behat/mink-selenium2-driver" or this PR https://github.com/minkphp/MinkSelenium2Driver/pull/252 to work for remote hosts.

    In my case I have a path under Behat\MinkExtension: the following files_path: %paths.base%/features/bootstrap and after this copy your file in bootstrap

    And for full path I use something like this:

    $path = $this->getMinkParameter('files_path').DIRECTORY_SEPARATOR. $file_name;
    $element->attachFile($path);
    

    As a best practice you should keep your file in the automation project.
    var_dump your path, if is correct it should work when running local, for remote you need that PR to upload file to the selenium instance.