Chu*_*Nze 15 php laravel laravel-dusk laravel-5.5 laravel-dusk2
我一直试图将Laravel Dusk整合到我的测试计划中一周,并且无法进行任何测试以实际提供预期结果.情况如下:
开箱即用的测试不起作用
我在本文的"家园上的Laravel Dusk"中添加了这些步骤,并在"setup-headless-selenium-xvfb.sh"中找到了我的配置文件中的要点.这消除了我得到的很多例外.
我还将所有现有的环境变量添加到我的phpunit.dusk.xml文件的php节点, 就像它们已经成功运行的phpunit测试一样.phpunit.xml
但是现在当我运行测试时,我无法获得预期的输出.这就是我在做的事情.我在我的主页('/')视图文件中添加了一个输入字段:<input id="dusk-test" value="1234">
我运行这个测试,它是原始示例测试的mod,是唯一的测试:
<?php
namespace Tests\Browser;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
class ExampleTest extends DuskTestCase
{
public function testBasicExample()
{
$this->browse(function (Browser $browser)
{
$browser->visit('/')->refresh()
->assertValue('#dusk-test', '1234')
;
});
}
}
Run Code Online (Sandbox Code Playgroud)
...通过运行php artisan dusk,这是我的输出每一次
PHPUnit 6.4.3 by Sebastian Bergmann and contributors.
E 1
/ 1 (100%)
Time: 1.07 seconds, Memory: 12.00MB
There was 1 error:
1) Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\NoSuchElementException: no such element:
Unable to locate element: {"method":"id","selector":"dusk-test"}
(Session info: headless chrome=62.0.3202.62)
(Driver info: chromedriver=2.32.498513 (2c63aa53b2c658de596ed550eb5267ec5967b351),platform=Linux 4.4.0-92-generic x86_64)
/home/vagrant/landing/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:102 /home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:320
/home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:535
/home/vagrant/landing/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:175
/home/vagrant/landing/vendor/laravel/dusk/src/ElementResolver.php:281
/home/vagrant/landing/vendor/laravel/dusk/src/ElementResolver.php:327
/home/vagrant/landing/vendor/laravel/dusk/src/Concerns/MakesAssertions.php:632
/home/vagrant/landing/tests/Browser/ExampleTest.php:22
/home/vagrant/landing/vendor/laravel/dusk/src/TestCase.php:92
/home/vagrant/landing/tests/Browser/ExampleTest.php:24
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
Run Code Online (Sandbox Code Playgroud)
为了使这更令人困惑,这是我从测试中转储时的输出.这是我如何倾倒
<?php
namespace Tests\Browser;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
class ExampleTest extends DuskTestCase
{
/**
* A basic browser test example.
*
* @return void
*/
public function testBasicExample()
{
$this->browse(function (Browser $browser)
{
$browser->visit('/')
->dump()
;
});
}
}
Run Code Online (Sandbox Code Playgroud)
和我php artisan dusk再次运行后的输出是
PHPUnit 6.4.3 by Sebastian Bergmann and contributors.
"<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>"
Run Code Online (Sandbox Code Playgroud)
这绝对不是我的主页.我也倾倒了$url价值vendor/laravel/dusk/src/Browser.php并使我的项目更正确APP_URL.
我不知所措.黄昏被发送到正确的位置,页面肯定有输入和价值.但是,我不能让Dusk给出预期的输出,即从元素中检索到12345.
所有帮助赞赏.
小智 3
也许我说的是错误的......但 Laravel dusk 似乎需要dusk而不是id: like dusk="dusk-test"。也可以在 : 之后调用它
$browser->visit('/')>refresh()
->assertValue('@dusk-test', '1234'),它应该像文档一样。