我正在运行Laravel Dusk for browser的示例测试,但是当我执行php artisan dusk时,我得到了一个错误
使用:* Ubuntu 18 * Laravel 5.8 * 黄昏5.1 * Chrome驱动程序74 * apache2
这是我的博客
<?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',
'--window-size=1920,1080',
'--disable-dev-shm-usage',
'--no-sandbox'
]);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
// 'http://localhost:9515', DesiredCapabilities::phantomjs()
// 'http://localhost:9515', DesiredCapabilities::chrome()
);
}
}
这是错误:
1) Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\UnknownServerException: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /snap/bin/chromium is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 4.18.0-20-generic x86_64)
3条答案
按热度按时间ppcbkaq51#
在我的例子中,我发现我需要将
--no-sandbox
添加到tests/DuskTestCase.php
,因为我是在lxd容器的root上运行的。我通过运行以下命令发现了错误:
vendor/laravel/dusk/bin/chromedriver-linux --log-level=ALL
和另一个运行php artisan dusk
的终端。它将显示日志,我能够从那里推断出问题。ldfqzlk82#
这是没有直接关系的问题,但由于我没有很容易找到任何修复相同的错误发生在Laravel 7+和宅基地10.0.0,我会提出的解决方案,我想出了经过几个小时的研究,并试图希望它能帮助其他人遇到这个问题.
宅基地配置
宅基地似乎不再支持Dusk开箱即用了,要安装使用Chromium的先决条件,你必须在你的
homestead.yaml
中添加webdriver功能:然后通过运行
homestead halt && homestead up --provision
重新配置。DuskTestCase类
之后,通过在
tests/DuskTestCase.php
的driverChrome()
方法中添加额外的参数,确保Chromium以无头模式启动:大多数人也会建议使用
--no-sandbox
和--disable-dev-shm-usage
标记,但是在使用安装google-chrome-stable
而不是chromium-browser
的webdriver功能正确地配置了宅基地之后,我不需要这些标记来正确运行。xzlaal3s3#
您可以尝试从official ChromeDriver downloads page手动下载ChromeDriver。