15

一周以来,我一直在尝试将 Laravel Dusk 集成到我的测试计划中,但无法进行任何测试以实际提供预期的结果。情况如下:

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

开箱即用的测试不起作用

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

所有帮助表示赞赏。

4

2 回答 2

3

也许我说的是错误的......但 Laravel 黄昏似乎需要dusk而不是id: like dusk="dusk-test"。也可以在 : 之后调用它 $browser->visit('/')>refresh() ->assertValue('@dusk-test', '1234'),它应该像文档一样。

于 2018-02-27T09:02:12.450 回答
0

Github上,有人通过替换文件解决了他https://http:// 问题.env

于 2018-03-08T23:01:01.890 回答