我有一个现有的最新 laravel 11 项目,该项目在带有 wsl2 (ubuntu) 的 Windows 11 中使用 docker 在 laravel sail 下运行。我已经根据 Laravel 官方文档安装并配置了 Laravel Dusk,Dusk 测试运行良好,但无论我如何尝试,我都无法禁用无头模式来打开浏览器窗口
我尝试的第一个想法是在我的 .env.dusk.local 中添加 DUSK_HEADLESS_DISABLED=true 不起作用。
接下来我在 DuskTestCase.php 的驱动程序方法中注释掉了 '--headless=new' 并且什么也没做
与“--disable-gpu”相同
尝试添加聊天 GPT 建议的“--no-sandbox”,你猜怎么着?它什么也没做
接下来我发起了关于 laracast 的讨论,其中有人建议将我的 docker-compose.yml 中的 selenium 镜像更改为:
image: 'selenium/standalone-chrome:4.1.2-20220217'
那也不起作用。
尝试向下航行--build -d。
我陷入困境,非常感谢任何帮助。
在使用 wsl2 在 laravel sail 上的可视浏览器中运行 laravel dusk 测试之前,您需要预先执行以下几个步骤:
您需要编辑您的
DuskTestCase.php
,例如:
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
// '--disable-gpu', //disable or remove disable-gpu to run with an browser it needs gpu
// '--headless', //disable or remove headless to run with an browser
'--no-sandbox',
'--disable-dev-shm-usage' //this isnt necesery but can help you with future problems look "https://stackoverflow.com/a/75719112/20538588"
]);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
);
}
确保您还解锁端口 7900 并定义了 chrome 独立映像。您可以通过如下配置
docker-compose.yml
来做到这一点:
selenium:
image: 'selenium/standalone-chrome:4.1.2-20220217' // <---have a chrome image configured
environment:
LARAVEL_SAIL: 1
volumes:
- '/dev/shm:/dev/shm'
ports:
- '${FORWARD_SELENIUM_PORT:-4444}:4444'
- '${FORWARD_SELENIUM_HEADFUL_PORT:-7900}:7900' // <---open port :7900
networks:
- sail
然后您可以访问该网址
localhost:7900
默认凭据是“秘密”
最后一步是通过添加以下内容来配置您
.env
:DUSK_HEADLESS_DISABLED=true