ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何用 Bazel 运行 Selenium Ruby 绑定测试:测试标签、BiDi 变体与输出查看

如何用 Bazel 运行 Selenium Ruby 绑定测试:测试标签、BiDi 变体与输出查看 如何用 Bazel 运行 Selenium Ruby 绑定测试测试标签、BiDi 变体与输出查看【免费下载链接】seleniumA browser automation framework and ecosystem.项目地址: https://gitcode.com/GitHub_Trending/se/selenium在开发或扩展 Selenium 的 Ruby 绑定rb/目录下的selenium-webdriver库与 RSpec 测试时需要用 Bazel 执行测试套件。Bazel 会为每个 spec 文件、每种浏览器及变体生成独立的测试目标通过--test_tag_filters标签可以按浏览器、本地/远程、BiDi 协议等维度筛选要运行的目标。本文覆盖准备环境、按标签运行测试、运行 BiDi 变体、查看测试输出以及新增 spec 时的构建文件要求。测试目标是如何生成的每个*_spec.rb文件不会直接对应一个测试目标。rb/spec/tests.bzl 中的rb_integration_test宏会为每个浏览器生成三类目标本地目标标签形如chrome、chrome-local、firefox-local远程目标需要 Grid标签形如chrome-remote数据依赖中会带上//java/src/org/openqa/selenium/grid:selenium_server_deploy.jar和 JREBiDi 目标标签为bidi和browser-bidi环境变量中内置WEBDRIVER_BIDItrue。标签规则在 rb/TESTING.md 中有明确说明浏览器标签如firefox匹配该浏览器的所有变体local、remote、beta、bidi加-local、-remote或-bidi后缀可以缩小范围。宏里的family_tags会把 beta/preview 变体与稳定版归为一组例如--test_tag_filterschrome会同时命中chrome和chrome-beta的目标见 rb/spec/tests.bzl。集成目标以 spec 文件去掉_spec.rb后的名字命名再接浏览器变体后缀例如driver-chrome、driver-chrome-remote、driver-chrome-beta-bidi。准备条件按 rb/TESTING.md 的 Local Development Setup 一节cd rb gem install bundler -v ~ 2.4 bundle installBundler 2.4 或更高版本。文档同时强调本地开发仍需要运行 Bazel 来生成 atoms 和 devtools 代码可通过以下方式生成这些产物bundle exec rake update或从父级selenium目录执行./go rb:update如果要针对特定 Ruby 版本测试把版本写入rb/.ruby-versionBazel 的 hermetic Ruby 工具链会读取该文件。该文件是签入仓库并全局升级的本地修改应视为临时覆盖不要提交echo X.Y.Z rb/.ruby-version其中X.Y.Z替换为所需的 Ruby 版本号。按标签运行测试以下命令来自 rb/TESTING.md 的 Running Tests 一节bazel test //rb/spec/... # All tests bazel test //rb/spec/unit:unit # All unit specs (single target) bazel test //rb/spec/integration/... --test_tag_filterschrome # Every Chrome variant bazel test //rb/spec/integration/... --test_tag_filtersfirefox-local # Local Firefox only bazel test //rb/spec/integration/... --test_tag_filtersfirefox-remote # Remote (Grid) Firefox only bazel test //rb/spec/integration/... --test_tag_filtersbidi # BiDi-mode across supporting browsers要直接运行单个 spec 的某个变体把目标名写全即可bazel test //rb/spec/integration/selenium/webdriver:driver-chrome单元测试不依赖浏览器位于rb/spec/unit/集成测试位于rb/spec/integration/selenium/webdriver/按chrome/、firefox/、safari/、bidi/等子目录组织见 TESTING.md 的 Test Organization 一节。文档同时提供 rb/Rakefile 作为可选捷径rake update # Setup everything to run tests in RubyMine rake unit # Run unit tests rake spec # Run all integration tests in Chrome运行 BiDi 变体BiDi 启用的目标以-bidi后缀命名仅对支持 BiDi 的浏览器生成它们在内部设置WEBDRIVER_BIDItrue。两种运行方式# Run a specs BiDi variant bazel test //rb/spec/integration/selenium/webdriver:driver-chrome-bidi # Run every BiDi variant across browsers that support it bazel test //rb/spec/integration/... --test_tag_filtersbidi如果要在一个不是-bidi变体的目标上临时开启 BiDi通过--test_env传变量bazel test //rb/spec/integration/... --test_tag_filterschrome --test_envWEBDRIVER_BIDItrueBazel 为每个生成的目标自动设置一组环境变量覆盖其中任何一个或给未设置的目标新增都用--test_env例如bazel test //rb/spec/integration/... --test_tag_filterschrome --test_envHEADLESStrue。常用变量摘自 TESTING.md变量用途WEBDRIVER_BIDI启用 BiDi 协议由-bidi目标设置HEADLESS让 Chrome、Edge、Firefox 以无头模式运行WD_SPEC_DRIVER要测试的驱动浏览器名或remote由 Bazel 设置WD_REMOTE_BROWSERWD_SPEC_DRIVER为remote时要测试的浏览器WD_REMOTE_URL用于远程测试的已运行服务器 URLCHROME_BINARY/CHROMEDRIVER_BINARY指定 Chrome 浏览器 / ChromeDriver 路径EDGE_BINARY/MSEDGEDRIVER_BINARY指定 Edge 浏览器 / msedgedriver 路径FIREFOX_BINARY/GECKODRIVER_BINARY指定 Firefox 浏览器 / GeckoDriver 路径查看测试输出bazel test //rb/... --test_outputall # 测试结束后在末尾显示控制台输出 bazel test //rb/... --test_outputstreamed # 实时显示输出此时不并行执行两种方式的区别all在测试运行完之后集中输出streamed实时输出但会禁用并行执行。已知限制Safari 目标带exclusive-if-local标签不能并行运行且target_compatible_with限定为 macOSIE 目标仅在 Windows 上兼容见 rb/spec/tests.bzl。所有浏览器测试目标都带requires-network标签定义于 common/browsers.bzl-remote变体额外依赖 Grid 服务器 jar 与 JRE。新增测试不需要改 Bazel 文件——rb_integration_test使用 glob 模式自动发现但*_spec.rb文件必须放在含rb_integration_test的BUILD.bazel所在目录中如 rb/spec/unit/BUILD.bazel。跑完一次bazel test后根据 Bazel 输出的 PASSED/FAILED 状态与--test_output展示的 RSpec 结果即可判断本轮测试是否通过若只想快速验证非浏览器逻辑用bazel test //rb/spec/unit:unit是最短路径。【免费下载链接】seleniumA browser automation framework and ecosystem.项目地址: https://gitcode.com/GitHub_Trending/se/selenium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表