文章目录
- Selenium: 浏览器自动化,就这一套
Selenium: 浏览器自动化,就这一套
Selenium 是一个浏览器自动化工具集,GitHub 上拿到了 34000+ 的 Star:
Selenium 提供了一套符合 W3C WebDriver 规范的编程接口,可以驱动 Chrome、Firefox、Edge、Safari 等主流浏览器执行操作。
简单说,你写一段脚本,Selenium 帮你打开浏览器,点击按钮,填写表单,抓取页面内容。Web 自动化测试、数据采集、RPA 流程,基本都绕不开它。
多语言支持
Selenium 不绑定某一种编程语言。官方提供 Java、Python、Ruby、JavaScript、C#、Rust 六种语言的绑定库。你用什么语言写项目,就用什么语言调用 Selenium。
以 Python 为例,安装和使用都很直接:
pipinstallseleniumfromseleniumimportwebdriverfromselenium.webdriver.common.byimportBy driver=webdriver.Chrome()driver.get("https://example.com")element=driver.find_element(By.TAG_NAME,"h1")print(element.text)driver.quit()十几行代码,就能完成打开浏览器、访问页面、定位元素、读取内容这一套动作。
Selenium Grid
单机跑浏览器有局限,Selenium Grid 解决的是分布式执行的问题。你可以把测试任务分发到多台机器上并行跑,不同机器上跑不同浏览器。对于需要覆盖多种浏览器和操作系统组合的测试场景,Grid 能省不少时间。
Selenium Manager
从 Selenium 4.x 开始内置了 Selenium Manager,它会自动检测系统上安装的浏览器版本,下载匹配的驱动程序。以前用 Selenium 最头疼的就是浏览器版本和驱动版本对不上,现在这个步骤基本自动化了。
搭建开发环境
参与 Selenium 项目开发需要 Bazel 构建工具和 JDK 17+。项目支持 GitPod 和 Dev Container,不想搭本地环境的话,浏览器里就能直接开始写代码。
各语言的构建命令:
# 构建某一语言的全部模块bazel build //<language>/...# 构建 Gridbazel build grid# 用封装好的命令./go<language>:build测试
Selenium 自身的测试体系也用 Bazel 管理。测试按规模分为 small(单元测试)、medium(集成测试)、large(浏览器驱动测试)三档,可以按浏览器类型和标签进行筛选。
# 跑 Java 单元测试bazeltest//java/...--test_size_filters=small# 跑 Python 全部测试bazeltest//py:allSelenium 走到今天已经二十多年。浏览器自动化工具来来去去,Selenium 一直站在那里,靠的是覆盖面广、社区活跃、规范兼容。做 Web 自动化,它是绕不过去的选项。
走到今天已经二十多年。浏览器自动化工具来来去去,Selenium 一直站在那里,靠的是覆盖面广、社区活跃、规范兼容。做 Web 自动化,它是绕不过去的选项。