2

我正在尝试通过 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 中,显示以下内容。

Selenium 网格会话

会话是“空的”,没有任何运行。浏览器有一个空白页面。

Selenium 网格会话视图

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(); 
});

我不知道可能出了什么问题。谁能帮我?

4

0 回答 0