我一直在尝试将Laravel Dusk集成到我的测试方案中已经有一个星期了,但无法进行任何测试以实际提供预期的结果。情况如下:
开箱即用的测试不起作用
phpunit.dusk.xml
文件的php节点中,就像在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')
;
});
}
}
...通过运行
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.
更令人困惑的是,这是我从测试中转储时的输出。这是我的转储方式
<?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()
;
});
}
}
我再次运行
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>"
这绝对不是我的主页。我还从
$url
中转储了vendor/laravel/dusk/src/Browser.php
值,并使我的项目正确APP_URL
。我很茫然。黄昏被发送到正确的位置,页面上肯定有输入和值。但是,我无法让Dusk提供预期的输出,即从元素中检索了12345。
所有帮助表示赞赏。
最佳答案
也许我在说的是错误的...但是Laravel黄昏似乎需要dusk
而不是id
:像dusk="dusk-test"
。也可以在$browser->visit('/')>refresh()->assertValue('@dusk-test', '1234')
之后调用它,它应该像doc一样。