【问题标题】:Get Laravel Dusk to Run Properly on Ubuntu 16 wt Laravel 5.5让 Laravel Dusk 在 Ubuntu 16 wt Laravel 5.5 上正常运行
【发布时间】:2018-04-02 18:38:18
【问题描述】:

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

  • 我正在 Homestead 上运行 Laravel 55(每个项目安装),使用 php 7.1.*
  • 我按照文档中的安装步骤安装了 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>"

这绝对不是我的主页。我还从vendor/laravel/dusk/src/Browser.php 中转储了$url 值,并让我的项目正确APP_URL

我很茫然。黄昏被发送到正确的位置,页面肯定有输入和价值。但是,我无法让 Dusk 给出预期的输出,即从元素中检索到 12345。

感谢所有帮助。

【问题讨论】:

  • 我也有同样的问题。我什至可以通过 chromedriver 调试验证,chrome 被定向到正确的端点并返回正确的数据。
  • 它是 HTTPS 网站吗? (顺便说一句:你不应该再需要 Selenium 和 Xvfb 了。)
  • 它不是 https 站点。我目前没有使用 Selenium,但仍在启动 Xvfb 会话。不再需要了吗?正如我之前提到的,从黄昏指示 webdriver 到 chrome 导航和渲染页面的一切都在工作。页面内容在 webdriver 和黄昏之间丢失。
  • 有了无头 Chrome,您就不再需要它了。日志说什么(console 目录)?它是否适用于像 google.com 这样的网站?
  • 我也遇到了同样的问题,有人对此有更新吗?

标签: php laravel laravel-5.5 laravel-dusk laravel-dusk2


【解决方案1】:

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

【讨论】:

  • 不是真的,我只是建议。但是当你看到这个: Unable to locate element: {"method":"id","selector":"dusk-test"} 并阅读文档时,看起来错误来自这里。
  • 问题是,如果我查看屏幕截图,它完全是空白的。如果我转储响应,它是:。所以找不到任何元素。
【解决方案2】:

Github 上,有人通过将https:// 替换为http:// 解决了他的问题 在.env 文件中。

【讨论】:

    猜你喜欢
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2017-06-29
    • 2018-03-07
    • 2018-02-19
    • 1970-01-01
    • 2018-02-25
    相关资源
    最近更新 更多