2017-03-19 4 views
0

J'ai fait test avec behat dans symfony mais ne fonctionne pas.Fonction ipress dans behat ne fonctionne pas

ceci est ma fonction:

Feature: dossiertest 

@javascript

Scénario: Liste 2 fichiers dans un répertoire

Given I am on the homepage 
Then I should see "hello" 
When I go to "/ajoutermed" 
Then I should see "ajouter" 
And I wait 2 seconds 
And I fill in "test_medbundle_med_section" with "tes nom" 
And I fill in "test_medbundle_med_info" with "tes nom" 
And I press "Ajouter Med" 
Then I should see "ajouter" 

c'est AjouterContext.php:

<?php 

namespace test\MedBundle\Behat\Context; 

use Behat\Behat\Context\Context; 
use Behat\Behat\Context\BehatContext; 
use Behat\Behat\Exception\PendingException; 
use Behat\Gherkin\Node\PyStringNode; 
use Behat\Gherkin\Node\TableNode; 
use Behat\MinkExtension\Context\MinkContext; 
use test\MedBundle\Entity\Apps; 
use test\MedBundle\Entity\Product; 

/** 
* Defines application features from the specific context. 
*/ 
class AjouterContext extends MinkContext 
{ 


    /** 
    * @When I press :arg1 
    */ 
    public function iPress($arg1) 
    { 
     self::$driver->findElement(WebDriverBy::cssSelector($arg1))->click(); 


      //$element = $page->find('css',"input[value='$arg1']"); 
    } 


    /** 
    * @Then I wait :arg1 seconds 
    */ 
    public function iWaitSeconds($arg1) 
    { 
     $this->getSession()->wait($arg1 * 1000); 
    } 


} 

behat.yml:

default: 
    suites: 
     default: 
      bundle: MedBundle 
      contexts: 
       - test\MedBundle\Behat\Context\FeatureContext 
       - test\MedBundle\Behat\Context\AjouterContext 
    extensions: 
     Behat\Symfony2Extension: ~ 
     Behat\MinkExtension: 
      base_url: http://localhost/test/web/app_dev.php 
      goutte: ~ 
      javascript_session: selenium2 
      selenium2: 
       wd_host: http://localhost:4444/wd/hub 
      sessions: 
       default: 
        symfony2: ~  

ce qui est mon problème quand je launche test:

enter image description here

Aidez-moi s'il vous plaît et merci

+0

Vous devriez utiliser des objets page et peut-être avoir un objet de page de base qui étend 'Page' où vous pouvez remplacer certaines méthodes si vous en avez besoin et ajouter quelques nouvelles communes. Assurez-vous d'avoir une bonne structure avant de commencer sinon vous ajouterez de la complexité inutile et il sera plus difficile de déboguer. S'il vous plaît jeter un oeil ici http://behat-page-object-extension.readthedocs.io/en/latest/guide/introduction.html – lauda

Répondre

0

au sujet de votre message d'erreur, il y a une ambigous « @When je presse " action. Si vous changez votre fonction iPress par

/** 
* @When I click on input :arg1 
*/ 
public function iClickOnInput($arg1) 
{ 
    self::$driver->findElement(WebDriverBy::cssSelector($arg1))->click(); 
    //$element = $page->find('css',"input[value='$arg1']"); 
} 

Cela devrait fonctionner.

+0

avec cette fonctionnalité: Lorsque je clique sur l'entrée "Ajouter Med", et cette fonction:/** * @When je clique sur l'entrée: arg1 */ fonction publique iClickOnInput (arg1 $) { self :: $ chauffeur-> findElement (WebDriverBy :: cssSelector (arg1 $)) -> cliquez sur(); // $ element = $ page-> find ('css', "input [valeur = '$ arg1']"); Je ai cette erreur: http: // imgur.com/a/Swv89 –

+0

avec cette fonction:/** * @When je clique sur: arg1 */ fonction publique iClickOn2 (arg1 $) { \t $ element = $ this-> getSession() -> getPage() -> findById ($ arg1); If (null === $ element) {var_dump ('Impossible d'évaluer l'élément avec l'ID: "% s"', $ arg1); \t \t \t \t} $ element-> cliquez sur();} j'ai cette erreur: http://imgur.com/a/G1d5F id 'test_medbundle_med_submit' existe en entrée soumettre Ajouter Med mais je cette erreur –

+0

j'utilise la presse mais j'ai ce problème: http://imgur.com/a/G1d5F –

0

Si est un élément de bouton et il a Ajouter Med comme l'un des ID suivant: | nom | titre | alt | valeur alors il devrait travailler avec I press "Ajouter Med"

Si cela est un lien alors vous devriez utiliser I follow "Ajouter Med"

Assurez-vous d'essayer de rechercher la méthode appropriée à utiliser, essayez d'utiliser un éditeur IDE avec autocomplete pour les étapes Behat/Gherkin et pour les méthodes php.

Évitez d'écrire vos propres méthodes/étapes de base personnalisées, ne le faites que si vous n'avez pas d'alternative, vous pourriez terminer avec 2-3 étapes qui font la même chose.

+0

Ajouter Med est une entrée soumettre –

+0

Ensuite, la valeur par défaut 'I press' de Mink devrait fonctionner si vous utilisez l'un des attributs' id | name | title | alt | valeur'. – lauda