我正在尝试通过 Selenium Grid 在 Docker 上运行一些 Playwright (Node.js) 测试,但由于超时,测试失败。Chrome 显然没有启动。在本地没有 Docker 一切都很好。
根据Playwright 文档,使用以下命令运行测试就足够了:
SELENIUM_REMOTE_URL=http://localhost:4444/wd/hub npx 编剧测试
但这行不通。
我通过 Powershell 运行以下文件在 Docker 中构建环境:
$maxNodes = 1
function GetImages()
{
docker pull selenium/hub:latest
docker pull selenium/node-chrome:latest
}
function CreateGrid()
{
docker network create grid
}
function CreateHub()
{
docker run -d -p 4442-4444:4442-4444 --net grid --name hub selenium/hub:latest
}
function CreateNodes()
{
$nodes = 1
while($nodes -le $maxNodes)
{
docker run -d -P --net grid -e SE_EVENT_BUS_HOST=hub -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e SE_NODE_SESSION_TIMEOUT=120 selenium/node-chrome:latest
$nodes++
}
}
cls
GetImages
CreateGrid
CreateHub
CreateNodes
cls
Write-Host "HUB AND NODES CREATED!!"
使用上述命令运行测试后,结果如下。
在 Docker Selenium Grid 中,显示以下内容。
会话是“空的”,没有任何运行。浏览器有一个空白页面。
playwright.config.ts的配置是:
import { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 1 : 0,
timeout: 20000,
workers:1,
use: {
baseURL: 'https://www.google.com',
viewport: { width: 1280, height: 720 },
browserName: "chromium",
channel: "chrome",
headless: false
}
};
export default config;
测试运行是:
test('Acessar Google', async ({ page }) => {
await page.goto('/');
const length = await page.locator('input[type=submit]').count();
expect(length >= 1).toBeTruthy();
});
我不知道可能出了什么问题。谁能帮我?