当我想使用功能attachFileToField将文件上传到字段中时如何解决“意外令牌”? Behat Mink

问题描述 投票:0回答:1

我在Windows上使用docker来驱动Google chrome导航器来测试本地Web应用程序上的页面。一切正常,但是当我需要在文件字段中插入image.jpg时遇到问题。

[当我试图解决此问题时,我创建了一个只有html字段的空白页

此方案在Linux VM上有效!

控制台错误

    Quand je rajoute dans le champ file le fichier 'C:\dev\tests\tmp\photos\potato.jpg' # FeatureContext::jeRajouteDansLeChampFileLeFichier()
      Behat\Mink\Exception\DriverException: SyntaxError: Invalid or unexpected token in vendor\dmore\chrome-mink-driver\src\ChromeDriver.php:1000
      Stack trace:
      #0 vendor\dmore\chrome-mink-driver\src\ChromeDriver.php(511): DMore\ChromeDriver\ChromeDriver->evaluateScript('var xpath_resul...')
      #1 vendor\behat\mink\src\Driver\CoreDriver.php(101): DMore\ChromeDriver\ChromeDriver->findElementXpaths('//html/.//*\r\n[s...')
      #2 vendor\behat\mink\src\Element\Element.php(168): Behat\Mink\Driver\CoreDriver->find('//html/.//*\r\n[s...')
      #3 vendor\behat\mink\src\Element\Element.php(157): Behat\Mink\Element\Element->findAll('named_exact', Array)
      #4 vendor\behat\mink\src\Element\Element.php(146): Behat\Mink\Element\Element->findAll('named', Array)
      #5 vendor\behat\mink\src\Element\TraversableElement.php(139): Behat\Mink\Element\Element->find('named', Array)
      #6 vendor\behat\mink\src\Element\TraversableElement.php(289): Behat\Mink\Element\TraversableElement->findField('monUpload')
      #7 features\bootstrap\FeatureContext.php(536): Behat\Mink\Element\TraversableElement->attachFileToField('monUpload', 'C:\\dev\\test...')
      #8 [internal function]: FeatureContext->jeRajouteDansLeChampFileLeFichier('C:\\dev\\test...')
      #9 vendor\behat\behat\src\Behat\Testwork\Call\Handler\RuntimeCallHandler.php(109): call_user_func_array(Array, Array)
      #10 vendor\behat\behat\src\Behat\Testwork\Call\Handler\RuntimeCallHandler.php(64): Behat\Testwork\Call\Handler\RuntimeCallHandler->executeCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #11 vendor\behat\behat\src\Behat\Testwork\Call\CallCenter.php(140): Behat\Testwork\Call\Handler\RuntimeCallHandler->handleCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #12 vendor\behat\behat\src\Behat\Testwork\Call\CallCenter.php(96): Behat\Testwork\Call\CallCenter->handleCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #13 vendor\behat\behat\src\Behat\Behat\Tester\Runtime\RuntimeStepTester.php(125): Behat\Testwork\Call\CallCenter->makeCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #14 vendor\behat\behat\src\Behat\Behat\Tester\Runtime\RuntimeStepTester.php(73): Behat\Behat\Tester\Runtime\RuntimeStepTester->testDefinition(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), Object(Behat\Behat\Definition\SearchResult), false)
      #15 vendor\behat\behat\src\Behat\Behat\Hook\Tester\HookableStepTester.php(74): Behat\Behat\Tester\Runtime\RuntimeStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #16 vendor\behat\behat\src\Behat\Behat\EventDispatcher\Tester\EventDispatchingStepTester.php(73): Behat\Behat\Hook\Tester\HookableStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #17 vendor\behat\behat\src\Behat\Behat\Tester\StepContainerTester.php(59): Behat\Behat\EventDispatcher\Tester\EventDispatchingStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #18 vendor\behat\behat\src\Behat\Behat\Tester\Runtime\RuntimeScenarioTester.php(76): Behat\Behat\Tester\StepContainerTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #19 vendor\behat\behat\src\Behat\Behat\Hook\Tester\HookableScenarioTester.php(74): Behat\Behat\Tester\Runtime\RuntimeScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #20 vendor\behat\behat\src\Behat\Behat\EventDispatcher\Tester\EventDispatchingScenarioTester.php(103): Behat\Behat\Hook\Tester\HookableScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #21 vendor\behat\behat\src\Behat\Behat\Tester\Runtime\IsolatingScenarioTester.php(69): Behat\Behat\EventDispatcher\Tester\EventDispatchingScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #22 vendor\behat\behat\src\Behat\Behat\Tester\Runtime\RuntimeFeatureTester.php(84): Behat\Behat\Tester\Runtime\IsolatingScenarioTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #23 vendor\behat\behat\src\Behat\Behat\Hook\Tester\HookableFeatureTester.php(72): Behat\Behat\Tester\Runtime\RuntimeFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #24 vendor\behat\behat\src\Behat\Behat\EventDispatcher\Tester\EventDispatchingFeatureTester.php(71): Behat\Behat\Hook\Tester\HookableFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #25 vendor\behat\behat\src\Behat\Testwork\Tester\Runtime\RuntimeSuiteTester.php(63): Behat\Behat\EventDispatcher\Tester\EventDispatchingFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #26 vendor\behat\behat\src\Behat\Testwork\Hook\Tester\HookableSuiteTester.php(73): Behat\Testwork\Tester\Runtime\RuntimeSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #27 vendor\behat\behat\src\Behat\Testwork\EventDispatcher\Tester\EventDispatchingSuiteTester.php(72): Behat\Testwork\Hook\Tester\HookableSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #28 vendor\behat\behat\src\Behat\Testwork\Tester\Runtime\RuntimeExercise.php(71): Behat\Testwork\EventDispatcher\Tester\EventDispatchingSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #29 vendor\behat\behat\src\Behat\Testwork\EventDispatcher\Tester\EventDispatchingExercise.php(70): Behat\Testwork\Tester\Runtime\RuntimeExercise->test(Array, false)
      #30 vendor\behat\behat\src\Behat\Testwork\Ordering\OrderedExercise.php(80): Behat\Testwork\EventDispatcher\Tester\EventDispatchingExercise->test(Array, false)
      #31 vendor\behat\behat\src\Behat\Testwork\Tester\Cli\ExerciseController.php(149): Behat\Testwork\Ordering\OrderedExercise->test(Array, false)
      #32 vendor\behat\behat\src\Behat\Testwork\Tester\Cli\ExerciseController.php(108): Behat\Testwork\Tester\Cli\ExerciseController->testSpecifications(Object(Symfony\Component\Console\Input\ArgvInput), Array)
      #33 vendor\behat\behat\src\Behat\Testwork\Cli\Command.php(63): Behat\Testwork\Tester\Cli\ExerciseController->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #34 vendor\symfony\console\Command\Command.php(255): Behat\Testwork\Cli\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #35 vendor\symfony\console\Application.php(915): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #36 vendor\symfony\console\Application.php(272): Symfony\Component\Console\Application->doRunCommand(Object(Behat\Testwork\Cli\Command), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #37 vendor\behat\behat\src\Behat\Testwork\Cli\Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #38 vendor\symfony\console\Application.php(148): Behat\Testwork\Cli\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #39 vendor\behat\behat\bin\behat(34): Symfony\Component\Console\Application->run()
      #40 {main}
    Et j'attends 10 secondes                                                                  # FeatureContext::jAttendsSecondes()
    Et j'exectute le code javascript "uploader.upload();"                                     # FeatureContext::jexectuteLeCodeJavascript()
    Et j'attends 5 secondes                                                                   # FeatureContext::jAttendsSecondes()

--- Scénarios échoués:

    features\1234-testUpload.feature:6

1 scénario (1 échecs)
6 étapes (2 succès, 1 échecs, 3 ignorés)
0m1.41s (10.42Mb)

composer.json:

{   
    "require": {       
    "behat/behat": "~3.5",      
    "behat/mink": "~1.7@dev",              
    "behat/mink-goutte-driver": "1.2.1",       
    "behat/mink-selenium2-driver": "~1.3.1" ,
    "behat/mink-extension": "*",
    "dmore/chrome-mink-driver":"*",
    "dmore/behat-chrome-extension": "*",
        "symfony/css-selector": "^4.3",
        "symfony/phpunit-bridge": "^4.3"
    },   
    "config": {       
        "bin-dir": "bin/"  
    }
}

featurecontext.php:

    /**
     * @When je rajoute dans le champ file le fichier :arg1
     */
    public function jeRajouteDansLeChampFileLeFichier($arg1)
    {
        $javascipt = <<<HEREDOC
        var elemnt = document.querySelector('input[type="file"] ');
        elemnt.setAttribute('name', 'monUpload');
        elemnt.setAttribute('visibility', 'visible');
HEREDOC;
        $this->getSession()->executeScript($javascipt);
        $this->getSession()->wait( 100 );
        $this->getSession()->getPage()->attachFileToField('monUpload', $arg1);
    }

在此函数中,问题出在最后一行$ this-> getSession()-> getPage()-> attachFileToField()。其余的正在工作。

feature.feature:

Scénario: Upload Test
    Etant donné que je suis sur "A LOCALHOST URL"
    Et j'attends 1 secondes
    Quand je rajoute dans le champ file le fichier 'potato.jpg'
    Et j'attends 3 secondes

具有英语功能。

Scenario : Upload Test
Since I'm on "A LOCALHOST URL"
I wait 1 second
When I add in the file field the file 'potato.jpg'
I wait 1 seconds

在“当我在文件字段中添加文件'图像路径'时,场景崩溃”

我已经尝试了很多路径:

'C:\dev\potato.jpg'
'\C:\dev\potato.jpg'
'file:\\\C:\dev\potato.jpg'
'C\dev\potato.jpg'
'/C/dev/potato.jpg'
'/c/dev/potato.jpg'

使用单引号和双引号以及可能存在的各种符号。如其他主题中所述,我尝试在behat.yml中添加一个files_path,以仅设置image.jpg而没有完整路径。

我的英语可能不太好,但是我已经尝试过谢谢]]

我在Windows上使用docker来驱动Google chrome导航器来测试本地Web应用程序上的页面。一切正常,但是当我需要将image.jpg插入文件字段时遇到问题。当...

windows docker google-chrome behat mink
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.