我在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插入文件字段时遇到问题。当...