php 浏览器黄昏测试“DevToolsActivePort文件不存在”

xghobddn  于 2022-12-21  发布在  PHP
关注(0)|答案(3)|浏览(206)

我正在运行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)
ppcbkaq5

ppcbkaq51#

在我的例子中,我发现我需要将--no-sandbox添加到tests/DuskTestCase.php,因为我是在lxd容器的root上运行的。
我通过运行以下命令发现了错误:vendor/laravel/dusk/bin/chromedriver-linux --log-level=ALL和另一个运行php artisan dusk的终端。它将显示日志,我能够从那里推断出问题。

ldfqzlk8

ldfqzlk82#

这是没有直接关系的问题,但由于我没有很容易找到任何修复相同的错误发生在Laravel 7+和宅基地10.0.0,我会提出的解决方案,我想出了经过几个小时的研究,并试图希望它能帮助其他人遇到这个问题.

宅基地配置

宅基地似乎不再支持Dusk开箱即用了,要安装使用Chromium的先决条件,你必须在你的homestead.yaml中添加webdriver功能:

features:
     - webdriver: true

然后通过运行homestead halt && homestead up --provision重新配置。

DuskTestCase类

之后,通过在tests/DuskTestCase.phpdriverChrome()方法中添加额外的参数,确保Chromium以无头模式启动:

protected function driverChrome()
    {
        $options = (new ChromeOptions)->addArguments([
            '--disable-gpu',
            '--headless',
        ]);

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

大多数人也会建议使用--no-sandbox--disable-dev-shm-usage标记,但是在使用安装google-chrome-stable而不是chromium-browser的webdriver功能正确地配置了宅基地之后,我不需要这些标记来正确运行。

xzlaal3s

xzlaal3s3#

您可以尝试从official ChromeDriver downloads page手动下载ChromeDriver。

wget https://chromedriver.storage.googleapis.com/87.0.4280.88/chromedriver_linux64.zip
unzip chromedriver_linux64.zip    
./chromedriver

相关问题