如何在“ 4.5”之后使用Selenium Grid版本进行剧作家测试
#测试 #java #playwright #selenium

与其他自动化测试库相比,Playwright相对较新,但它支持以不同语言编写测试。

如果您使用的是Java,剧作家可以利用硒网格来扩展测试执行,帮助您节省时间并提高效率。

tl; dr;

  • 剧作家有一个限制,将硒网格中的运行测试限制在koude0之前的版本(在撰写本文时-2月/2023年)。
  • Selenium 4通过其建筑的重新设计。经过长时间的稳定,4.5.2-20221021版本解决了一个长期的间歇性问题。
  • 如果剧作家测试仅在4.5.2-20221021之前使用版本,则它将无法从Selenium Team对网格或任何浏览器版本升级的最新改进中受益。 该问题的解决方法是使用特定属性-Djdk.httpclient.websocket.intermediateBufferSize,作为参数传递给selenium-server.jar

问题

尽管与硒相比,剧作家仍然相对较新,但通常提供更快的测试执行时间。在我用来比较这两个工具的“真实”测试中,结果如下:

规格 图书馆 测试数 持续时间
selenium.specs.loginspec 32 1:31分钟
playwright.specs.loginspec 剧作家 32 43秒

上面的示例是从本地计算机运行的简单测试,而无需使用硒网格。

根据剧作家网站的说法,用剧作家编写的测试可以与记录的here对抗Selenium Grid。但是,截至2023年2月,硒网格版本或更高版本的硒栅格版本有一个问题,这可能会在尝试与硒网格一起使用剧作家时会导致错误。

如果剧作家测试只能在此之前使用硒网格版本运行,则意味着它仅使用Google Chrome或Microsoft Edge的旧版本运行:

规格 4.5.0中的支持版本 最新版本(4.8.0
chrome 106.0.5249.119 110.0.5481.77
chromedriver 106.0.5249.61 110.0.5481.77
边缘 106.0.1370.47 110.0.1587.41
edgedriver 106.0.1370.47 110.0.1587.41

历史

硒4 释放时,它完全改变了硒网格的结构方式。它已经基于分布式组件完全改变了设计,以处理hubnodes之间的消息。

Image description

发布后,一个关键的间歇性问题受到了极大的关注,因为在解决之前很难繁殖并持续将近两年。

此修复程序已正式在docker-selenium版本的4.5.2-20221021上发布。与剧作家编写的测试的执行。

完全相同的版本。

修复(解决方法)

该修复程序由EndPositiveissue中为Selenium Team开业。

该问题似乎与WebSocket通信有关,消息大于硒网格的默认配置,引起了问题。

建议是增加将参数Djdk.httpclient.websocket.intermediateBufferSize的websocket缓冲区大小传递到selenium-server.jar

使用docker-selenium图像,可以如下所示:

version: "3"

services:
  selenium-hub:
    image: selenium/hub:4.8.0-20230210
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
    environment:
      - JAVA_OPTS=-Djdk.httpclient.websocket.intermediateBufferSize=3000000
      - SE_EVENT_BUS_HOST=selenium-hub

  chrome:
    image: selenium/node-chrome:4.8.0-20230210
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - JAVA_OPTS=-Djdk.httpclient.websocket.intermediateBufferSize=3000000
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
      - SE_NODE_GRID_URL=http://localhost:4444

要针对硒网格进行剧作家测试,必须声明环境变量SELENIUM_REMOTE_URL

export SELENIUM_REMOTE_URL=http://localhost:4444

之后,可以以不同的方式进行测试:

./gradlew test


./mvnw test

或使用其他偏好的构建工具。

最终考虑

看来,剧作家使用硒网格,但硒网格并不正式支持剧作家。在Selenium Github项目中提出了使用最新版本的Selenium Grid进行剧作家测试的问题,但是,一旦无法使用Selenium(和Selenium WebDriver)进行测试,尚未对其进行调查。

Image description