与其他自动化测试库相比,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 释放时,它完全改变了硒网格的结构方式。它已经基于分布式组件完全改变了设计,以处理hub
和nodes
之间的消息。
发布后,一个关键的间歇性问题受到了极大的关注,因为在解决之前很难繁殖并持续将近两年。
此修复程序已正式在docker-selenium
版本的4.5.2-20221021
上发布。与剧作家编写的测试的执行。
修复(解决方法)
该修复程序由EndPositive在issue中为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
)进行测试,尚未对其进行调查。 p>