无法开箱即用运行Laravel Dusk

时间:2019-05-22 14:56:08

标签: laravel laravel-dusk

我遵循了here中的指示。但是我遇到了这个错误,无法弄清原因。

There was 1 error:

1) Tests\Browser\Auth\LoginTest::testLogin
TypeError: Argument 1 passed to Facebook\WebDriver\Remote\DesiredCapabilities::__construct() must be of the type array, null given, called in /var/www/xxxxxx/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php on line 127

/var/www/xxxxxx/vendor/facebook/webdriver/lib/Remote/DesiredCapabilities.php:33
/var/www/xxxxxx/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:127
/var/www/xxxxxx/tests/DuskTestCase.php:40
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:192
/var/www/xxxxxx/vendor/laravel/framework/src/Illuminate/Support/helpers.php:816
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:193
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:93
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:64
/var/www/xxxxxx/tests/Browser/Auth/LoginTest.php:27

这是我的DuskTestCase

<?php

namespace Tests;

use Laravel\Dusk\TestCase as BaseTestCase;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;

abstract class DuskTestCase extends BaseTestCase
{
    use CreatesApplication;

    /**
     * Prepare for Dusk test execution.
     *
     * @beforeClass
     * @return void
     */
    public static function prepare()
    {
        static::startChromeDriver();
    }

    /**
     * Create the RemoteWebDriver instance.
     *
     * @return \Facebook\WebDriver\Remote\RemoteWebDriver
     */
    protected function driver()
    {
        $options = (new ChromeOptions)->addArguments([
            '--disable-gpu',
            '--headless',
            '--no-sandbox', // as suggested in one of the forums but didn't work
            '--window-size=1920,1080',
        ]);

        return RemoteWebDriver::create(
            'http://localhost:3402', DesiredCapabilities::chrome()->setCapability(
                ChromeOptions::CAPABILITY, $options
            )
        );
    }
}

我已经安装了facebook / webdriver,但存在相同的错误。我正在使用Ubuntu和Docker。 Chrome也不是我的默认浏览器,更改该设置无济于事。我在这里想什么?

1 个答案:

答案 0 :(得分:1)

浏览器驱动程序下载到您的laravel应用中的 \ vendor \ laravel \ dusk \ bin 中。

chromedrive location

从文件浏览器导航至该位置并运行可执行文件(取决于您的操作系统,我的是 Windows ,而我正在运行 chromedriver-win.exe )。你应该看到这个

terminal showing port being used

这是要在您的 DuskTestCase.php 文件中使用的端口号

enter image description here

此外,您还需要确保将 .env 文件中的 APP_URL 变量设置为可从浏览器访问的URL(我的名称是APP_URL = http://localhost:8888 )。

注意:我没有在 .env 文件中使用端口 9515

我希望能帮上忙。