我一直在努力修复一个曾经可以正常工作的 WSL2 系统,该系统可以在 Windows 上显示 Linux 应用程序的 GUI。以前,我使用的是名为 GWSL 的第三方应用程序/xserver,但有一天,我出于某种不相关的原因卸载了 Windows 上的 Docker Desktop,结果一切都搞砸了。
从那时起,我了解到 WSL 的当前版本带有自己的图形支持(WSLG),由微软自己提供,并且我能够启动安装在 Ubuntu 上的任何应用程序,例如google-chrome
等,只需一个初始步骤。
我仍然对所有这些 x 服务器和 DISPLAY 的东西感到很困惑,我唯一关心的是让 Playwright 启动浏览器来测试一些网页内容,但它一直给我这个错误
Looks like you launched a headed browser without having a XServer running.
Set either 'headless: true' or use 'xvfb-run <your-playwright-app>
所以我并不是在寻求剧作家的帮助,而是想了解到底发生了什么。
当我在 WSL2 上启动 Ubuntu 并运行
ps e | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u
我明白了
DISPLAY=10.255.255.254:0.0
DISPLAY=:0
这是否意味着我有两个显示器?我想是的。
当我跑步时echo $DISPLAY
我得到10.255.255.254:0.0
当我跑步时google-chrome
我得到Missing X server or $DISPLAY
当我运行时,export DISPLAY=:0
我不仅可以成功运行google-chrome
Playwrights 版本的chromium
(found me\.cache\ms-playwright\chromium-1134\chrome-linux\chrome
),而且没有任何问题。
然而,当我尝试再次运行 Playwright 测试时,它仍然告诉我没有运行 XServer。
所以此时,我试图了解我处于什么状态。如果我实际上可以通过 Ubuntu 启动 chrome 等并在 Windows 桌面上看到它,那么我真的没有运行 XServer 吗?我的 DISPLAY 是否错误或太多?我们是否认为 Playwright 仅适用于特定的 DISPLAY 或 XServer(端口?ip?)。我在这里有点茫然,不知道还有什么可以调试。我已经安装并运行了大约 1000 个 linux 命令,并尝试了各种 Windows 第三方 xservers。它似乎有点起作用,只是不适用于 Playwright。