让Laravel Dusk在Ubuntu 16 wt Laravel 5.5上正常运行

Chu*_*Nze 15 php laravel laravel-dusk laravel-5.5 laravel-dusk2

我一直试图将Laravel Dusk整合到我的测试计划中一周,并且无法进行任何测试以实际提供预期结果.情况如下:

  • 我在Homestead上运行Laravel 55(按照项目安装),使用php 7.1.*
  • 我按照文档中的安装步骤安装了Dusk.

开箱即用的测试不起作用

但是现在当我运行测试时,我无法获得预期的输出.这就是我在做的事情.我在我的主页('/')视图文件中添加了一个输入字段:<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'),它应该像文档一样。