因为项目经历中写到基于 Selenium 和 WebDriverManager实现了自动化网页截图功能,出现了Selenium和WebDriver这两个东西,所以面试的时候,面试官让我解释一下这两个东西是干嘛用的。
本文就来理清一下。
什么是WebDriver?
Selenium是一套完整的Web自动化测试工具集,而 WebDriver 是其中最核心的组件。
简单说一下原理:
- 我们写的代码(比如
driver.getScreenshotAs(OutputType.FILE)),会被WebDriver转换成浏览器能识别的协议命令(比如W3C WebDriver协议)。 - 浏览器收到命令后执行操作(网页截图),再把结果通过WebDriver返回给我们的代码。
不同浏览器有专属的WebDriver:
- Chrome → ChromeDriver
- Firefox → GeckoDriver
- Edge → EdgeDriver
这些驱动都是 Chrome、Firefox 等浏览器厂商官方维护发布的,而非 Selenium 官方提供,这也是浏览器版本更新后,对应驱动必须同步更新的原因。
为什么强烈建议搭配WebDriverManager?
WebDriverManager 是一个开源库,作用是自动管理浏览器驱动。
比如你电脑上Chrome是123版本,它会自动找对应的ChromeDriver 123版本,不用你手动去官网找链接、下文件,也不用写 System.setProperty 那行配置环境的代码,它会帮你搞定。
此外,它还自带驱动本地缓存能力,一次下载后会重复复用,不会每次运行脚本都重新下载,不影响自动化截图的执行效率。
举个例子
- 先在Maven里加依赖:
|
|
- 然后代码里直接用:
|
|
小贴士
- WebDriver:Selenium和浏览器之间的“桥梁”,负责把代码指令翻译成浏览器动作。
- WebDriverManager:桥梁的“管理员”,自动搞定驱动版本、下载、配置,让你专注写业务逻辑。