如何使用 Laravel 5.5 禁用 Chrome 的无头模式 Dusk?

问题描述 投票:0回答:3

我希望在 Laravel 5.5 中使用 Dusk 2.0 运行浏览器测试时能够看到浏览器(特别是这样我可以使用 $browser-tinker() 并为其提供一些手动命令以进行调试)。

有人知道该怎么做吗?我希望有一些简单的事情:

php artisan dusk --noheadless
php laravel testing laravel-dusk
3个回答
5
投票

安装 Dusk 应在应用程序的

DuskTestCase.php
目录中创建一个
/tests/
文件。此文件中的
DuskTestCase
类包含一个
driver()
方法,该方法很容易重写(因为它位于您的应用程序中,您可以直接对其进行更改,因为它不再是包的一部分)。

禁用无头模式现在非常简单,只需从

'--headless'
实例上的
$options
方法中的
addArguments()
变量中删除
ChromeOptions
参数即可。

从 Laravel 5.5 开始,$options 变量看起来像这样:

$options = (new ChromeOptions)->addArguments([
    '--disable-gpu',
    //'--headless'
]);

0
投票

我编写了一个 bash 脚本来从终端切换 --headless 选项。

用途:
浏览器可见:./run_tests -in-browser
没有浏览器:./run_tests

流程如下:

  1. 修改DuskTestCase.php以读取环境变量,我们将其称为DISABLE_HEADLESS_TEST。每当它设置为 true 时,都会在浏览器中显示测试。
  2. 创建一个 shell 脚本,将现有 .env 文件的内容复制到 .env.dusk.local 文件中,将 DISABLE_HEADLESS_TEST 附加到 .env.dusk.local 的末尾,并为我们运行 artisan dusk。然后在测试完成后删除 .env.dusk.local。

DuskTestCase.php

protected function driver()
{
    $driver_args = env("DISABLE_HEADLESS_TEST") ? ['--disable-gpu'] : 
                                                  ['--disable-gpu','--headless'];
    $options = (new ChromeOptions)->addArguments($driver_args);

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

运行测试脚本
使其可执行 sudo chmod +x run_tests

#! /bin/bash

function make_env_file_copy {
    if cp .env .env.dusk.local; then
        return 0;
    else
        echo "Error. Can't copy .env file to .env.dusk.local";
        return 1;
    fi
}

function add_line_to_env_file {
    if echo $'\r\n'"DISABLE_HEADLESS_TEST=true" >> .env.dusk.local; then
        return 0;
    else
        echo "Error. Can't write to .env.dusk.local";
        return 1;
    fi
}

#------------ MAIN --------------

if [[ $1 = "-in-browser" ]]; then

    echo "Running Dusk tests in the browser.";

    make_env_file_copy &&
    add_line_to_env_file && 
    php artisan dusk;

else
    echo "Running tests";
    php artisan dusk;
fi

echo "Cleaning up";
rm .env.dusk.local;

0
投票

通过

.env
文件有一个简单的选项。只需将
DUSK_HEADLESS_DISABLED=true
添加到您的 .env 文件中,清除缓存,它就应该可以完美运行。 这个视频对你来说应该很方便。

© www.soinside.com 2019 - 2024. All rights reserved.