一周以来,我一直在尝试将 Laravel Dusk 集成到我的测试计划中,但无法进行任何测试以实际提供预期的结果。情况如下:
- 我正在使用 php 7.1 在 Homestead 上运行 Laravel 55(每个项目安装)。*
- 我按照文档中的安装步骤安装了 Dusk。
开箱即用的测试不起作用
我将这篇关于“Laravel Dusk on Homestead”的文章中的步骤和“setup-headless-selenium-xvfb.sh”中的要点添加到我的配置文件中。这消除了我得到的很多异常。
我还将所有现有的环境变量添加到我的
phpunit.dusk.xml
文件的 php 节点中,就像它们在已经成功运行的 phpunit 测试中所做的那样phpunit.xml
但是现在当我运行测试时,我无法获得预期的输出。这就是我正在做的事情。我在主页 ('/') 视图文件中添加了一个输入字段,如下所示:<input id="dusk-test" value="1234">
我运行这个测试,它是原始示例测试的一个模型,并且是唯一的测试:
<?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。
所有帮助表示赞赏。