新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何用 Bazel 运行 Selenium Java 绑定测试:测试目标、浏览器标签与跳过注解

发布时间:2026/9/11 23:10:16来源:尧图网络
如何用 Bazel 运行 Selenium Java 绑定测试:测试目标、浏览器标签与跳过注解
如何用 Bazel 运行 Selenium Java 绑定测试测试目标、浏览器标签与跳过注解【免费下载链接】seleniumA browser automation framework and ecosystem.项目地址: https://gitcode.com/GitHub_Trending/se/selenium这篇文章解决一个具体问题在 Selenium 仓库中如何用 Bazel 跑通 Java 语言绑定java/目录的测试——包括如何定位测试目标、用浏览器标签筛选要跑哪些测试、以及测试失败时如何用 JUnit 跳过注解控制其运行范围。适用前提是你在 Selenium 仓库检出目录内工作并已按 README 的要求装好 Bazelisk自动按.bazelversion下载对应 Bazel 版本、JDK 17 及以上并将JAVA_HOME指向 JDK可用javac命令是否可用来确认。浏览器测试还需要一个可用的 X 显示环境Linux 下可用虚拟 X 服务器见文末。测试目标从哪里来java_selenium_test_suite与*Test.javaBazel 会为浏览器和远程 grid 分别创建独立的测试目标具体支持哪些浏览器取决于该测试目录中BUILD.bazel文件的声明见 java/TESTING.md。测试文件本身不需要手动注册*Test.java文件放在一个包含java_selenium_test_suite声明的BUILD.bazel所在目录即可被自动拾取。以 java/test/org/openqa/selenium/bidi/BUILD.bazel 为例声明形如java_selenium_test_suite( name large-tests, size large, srcs glob([*Test.java]), browsers BIDI_BROWSERS, tags [ selenium-remote, ], deps [...], )其中browsers参数决定该套件会为哪些浏览器生成测试目标取值列表定义在 java/defs.bzl如BIDI_BROWSERS、SINGLE_BROWSER。目标的路径写法遵循 Bazel 惯例见 README Building 一节以//开头接相对BUILD.bazel的目录路径再用:接目标名。例如 bidi 目录下所有测试对应bazel test //java/test/org/openqa/selenium/bidi/...如果不确定某个目录下有哪些目标可以先用bazel query查询构建图AGENTS.md 建议用bazel query ...定位 label再执行 build/test。运行测试的基本命令java/TESTING.md 给出的主路径命令bazel test //java/... # 运行全部 Java 测试 bazel test //java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest # 运行单个测试测试默认并行执行。常用附加参数均来自 java/TESTING.mdbazel test //java/... --pin_browsers # 使用固定版本的浏览器文档标注为推荐 bazel test //java/... --flaky_test_attempts3 # 失败测试最多重跑 3 次 bazel test //java/... --test_outputall # 结束后显示所有测试输出 bazel test //java/... --test_outputstreamed # 实时显示输出会禁用并行执行另外根 AGENTS.md 中列出的--cache_test_resultsno用于禁用结果缓存、强制重新执行测试CONTRIBUTING.md 的 Java 小节给出的本地测试命令就带上了该参数bazel test --cache_test_resultsno --test_size_filterssmall grid java/test/...用 size 与浏览器标签筛选测试Bazel 按测试规模size和标签tag两个维度过滤。size 的含义见 README Testing 一节small— 通常是不开浏览器的单元测试medium— 比简单单元测试复杂、但不完全驱动浏览器large— 通常真正驱动浏览器的测试。对应的过滤命令bazel test //java/... --test_size_filterssmall # 仅单元测试无浏览器 bazel test //java/... --test_size_filterslarge # 所有浏览器测试浏览器标签过滤则决定针对哪个浏览器运行bazel test //java/... --test_tag_filterschrome # 只跑 chrome 测试 bazel test //java/... --test_tag_filtersremote-browser # 所有在 grid 上运行的浏览器测试 bazel test //java/... --test_tag_filters-safari # 用 - 前缀排除某个标签两点限制需要注意均来自 README同时出现多个--test_tag_filters时只有最后一个生效若同时使用了继承的 config 要特别小心--pin_browsersfalse表示改用 Selenium Manager 查找浏览器/驱动与默认的固定版本策略二选一。结果判断输出、重跑与 Linux 无显示环境bazel test本身会对每个目标给出 PASSED/FAILED 结论要看具体输出用--test_outputall结束后显示全部输出或--test_outputstreamed实时显示但会禁用并行。结果被缓存而未真正执行时加--cache_test_resultsno强制重跑AGENTS.md。在 Linux 上Bazel 默认在当前 X 服务器上运行浏览器测试。若没有图形会话README 给出的做法是起一个虚拟 X 服务器Xvfb :99 DISPLAY:99 jwm bazel test --test_envDISPLAY:99 //java/... --test_tag_filterschrome或者用 Bazel 的--run_under功能让xvfb-run前置执行bazel test --run_underxvfb-run -a //java/...跳过注解按浏览器控制测试运行测试类继承JupiterTestBase使用 JUnit 5Jupiter与 AssertJ 断言java/TESTING.md。跳过机制由 JUnit 注解实现注解接受value浏览器和reason一行一个浏览器。浏览器取值CHROME、EDGE、FIREFOX、SAFARI、IE默认ALL。两种跳过注解java/TESTING.md注解用途Ignore测试对某浏览器不可用。还可接受issueGitHub issue如#1234和gitHubActions只在 CI 上跳过。NotYetImplemented功能尚未实现。测试始终运行失败时按通过处理若意外通过则报错以便移除该注解。仓库中的真实用法如 java/test/org/openqa/selenium/AlertsTest.javaIgnore(value CHROME, reason Hangs) Ignore(value EDGE, reason Hangs)以及 java/test/org/openqa/selenium/ClickScrollingTest.java 中的issue参数Ignore(value IE, issue 716)与 driver 生命周期相关的注解同样接受value和reason配合共享的driver使用因为同一个driver在测试之间被复用java/TESTING.md注解用途NeedsFreshDriver测试需要干净的浏览器状态测试前重启 driver。NoDriverBeforeTest测试需要自定义 capabilities 或测试 driver 创建本身driver 会被销毁测试内需用createNewDriver(capabilities)自建。NoDriverAfterTest测试会把浏览器留在糟糕状态测试后重启 driver。还可接受failedOnly。新建测试时测试 HTML 页面放在common/src/web/页面 URL 取自java/test/org/openqa/selenium/testing/Pages.java的pages字段并有两个预配置的等待方法5 秒与 10 秒java/TESTING.mdclass MyFeatureTest extends JupiterTestBase { Test void testBasicFunctionality() { driver.get(pages.xhtmlTestPage); wait.until(ExpectedConditions.titleIs(XHTML Test Page)); // 10s timeout shortWait.until(ExpectedConditions.elementToBeClickable(element)); // 5s timeout assertThat(driver.getTitle()).isEqualTo(XHTML Test Page); } }需要同时开两个浏览器如多用户场景时用localDriver new WebDriverBuilder().get()创建第二个实例赋给localDriver字段后测试结束会自动 quit。文档同时强调用WebDriverBuilder或createNewDriver(capabilities)而不是直接new ChromeDriver()因为 builder 会遵循当前 Bazel 目标实际运行的浏览器硬编码驱动会与当前目标冲突。边界与限制多个--test_tag_filters参数只有最后一个生效README。浏览器测试依赖本地 X 会话或虚拟 X 服务器无显示环境的 Linux 机器需按上文配置DISPLAY或使用--run_underxvfb-run -a。--test_outputstreamed会禁用并行执行大批量运行时会明显变慢调试单个目标时再使用。新增测试文件只要满足*Test.java命名且位于含java_selenium_test_suite声明的目录下一般无需改动 Bazel 文件需要新浏览器组合时才涉及修改BUILD.bazeljava/TESTING.md。【免费下载链接】seleniumA browser automation framework and ecosystem.项目地址: https://gitcode.com/GitHub_Trending/se/selenium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

eCapture SSL/TLS 抓包 CPU 占用偏高?三个关键配置把它降下来 2026/9/11 23:49:22

eCapture SSL/TLS 抓包 CPU 占用偏高?三个关键配置把它降下来

eCapture SSL/TLS 抓包 CPU 占用偏高?三个关键配置把它降下来 【免费下载链接】ecapture Capturing SSL/TLS plaintext without a CA certificate using eBPF. Supported on Linux/Android kernels for amd64/arm64. 项目地址: https://gitcode.com/GitHub_Trendi…

阅读更多 →
@medusajs/framework 演进全解析:从 Medusa 2.0 重构到 2.20 的框架内核变迁 2026/9/11 23:49:22

@medusajs/framework 演进全解析:从 Medusa 2.0 重构到 2.20 的框架内核变迁

medusajs/framework 演进全解析:从 Medusa 2.0 重构到 2.20 的框架内核变迁 【免费下载链接】medusa The worlds most flexible commerce platform for agents and developers 项目地址: https://gitcode.com/GitHub_Trending/me/medusa medusajs/framework …

阅读更多 →
GMSK调制解调误码率仿真:相位连续性、高斯滤波与匹配滤波深度解析 2026/9/11 23:49:22

GMSK调制解调误码率仿真:相位连续性、高斯滤波与匹配滤波深度解析

简介:本资源是一份面向通信工程专业学生及MATLAB初学者的GMSK调制解调误码率仿真实践材料,聚焦数字通信中高斯最小频移键控的核心原理验证与性能分析。压缩包共13个文件,含11个MATLAB源程序(如GMSK_gaussian_filter.m、AWGN_chann…

阅读更多 →
AI漫剧制作指南:5款免费工具从0到1打造爆款动态漫画 2026/9/11 23:49:22

AI漫剧制作指南:5款免费工具从0到1打造爆款动态漫画

1. 为什么AI漫剧突然火起来,以及免费工具的选型思路漫剧这个词,最近半年在短视频平台上的热度比我预想的还要猛。简单说,它就是介于"动态漫画"和"短剧"之间的一种内容形态:画面是漫画风格,但有人物…

阅读更多 →
JavaWeb宿舍管理系统:JSP+Servlet+MySQL三层架构实战 2026/9/11 23:49:22

JavaWeb宿舍管理系统:JSP+Servlet+MySQL三层架构实战

简介:本资源是一套完整的JavaWeb学生宿舍管理系统毕业设计项目,面向计算机专业本科生及Java初学者,解决高校宿舍管理中人员登记、房间分配、访客记录与报修处理等核心业务场景。压缩包含1070个文件,总大小73.72MB,涵盖…

阅读更多 →
SiP系统级封装技术解析与应用实践 2026/9/11 23:46:22

SiP系统级封装技术解析与应用实践

1. SiP类器件:系统级封装的核心概念解析System in Package(SiP)正成为电子工程领域的热门技术方向。简单来说,SiP是将多个具有不同功能的芯片(如处理器、存储器、传感器等)通过先进封装技术集成在一个封装体…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞