主流的 Web 自动化测试工具
聊到 Web 自动化测试,市面上有几款工具几乎绕不开——QTP、Selenium、Robot Framework。它们各有各的生态位,但要说谁最“亲民”,还真得细细比较一番。
Selenium
Selenium 是开源领域里自动化测试的常青树,核心思路很直接:用代码模拟真实用户操作浏览器,比如点击链接、填写表单、提交数据,来验证 Web 应用的功能和性能是否可靠。
它并不是一个单一的工具,而是一套组件家族。最核心的是 Selenium WebDriver,提供了 Java、Python、JavaScript 等主流语言的 API;此外还有 Selenium IDE,一个浏览器插件,能录制和回放操作;以及 Selenium Grid,支持在多种浏览器和操作系统上并行跑测试,效率一下子就上来了。
Selenium 的最大优势在于跨平台和跨浏览器能力,几乎能覆盖所有主流环境。因为是开源项目,集成到 CI/CD 流水线也很顺手。而且它用的是真实浏览器,模拟的用户行为更贴近实际情况,这一点跟某些“假浏览器”工具有本质区别。
当然,它也有短板。测试脚本的质量直接影响执行效率,代码写不好就容易拖慢速度;Grid 模式下需要准备足够的浏览器和系统环境,资源消耗不低;另外一些需要与本地设备交互的 Web 应用,Selenium 就无能为力了。

Robot Framework
Robot Framework 是一个通用型的开源自动化框架,不仅能做测试自动化,还能搞 RPA(机器人流程自动化)。背后有专门的基金会维护,很多行业头部公司都在用。
它的核心卖点是开放和可扩展。几乎可以和任何第三方工具集成,构建出灵活且强大的自动化方案。而且完全免费,没有许可费用问题。
语法上,Robot Framework 采用了人类可读的关键字形式,上手门槛很低。如果需要扩展功能,可以用 Python、Java 等语言写库。它还有一个丰富的生态系统,到处是现成的库和工具,拿来就能用。

QTP
QTP(QuickTest Professional)是商业自动化测试工具的老牌选手,后来被惠普收购,现在归 MicroFocus 管理,也叫 UFT(Unified Functional Testing)。它主要用来做功能测试,帮助测试人员发现应用中的缺陷和偏差。对于企业级项目来说,它依然是一个稳重的选择。
最容易上手的 Web 自动化测试工具
工具虽多,但要论“最容易上手”,Selenium 绝对排在前列。为什么这么说?
- 开源免费:源码摆在那,想学想改都行;
- 跨平台:Linux、Windows、macOS 都支持;
- 浏览器兼容性广:Firefox、Chrome、IE、Safari 等主流浏览器一网打尽;
- 语言支持多:Python、Java、C#、JavaScript、Ruby、PHP……你会哪门用哪门。
而且 Selenium 自带了一堆现成的 API,你不用从零造轮子:
- Selenium RC:让 Selenium 能驱动多个浏览器;
- Selenium IDE:录制回放,非常适合快速验证;
- Selenium Grid:分布式执行,测试效率拉满;
- Selenium WebDriver:直接控制浏览器的核心组件。
Selenium 环境配置
Selenium 的环境配置其实很轻量,几步就能搞定。
- 配置 Selenium 的环境

- 配置 Maven 的环境

接下来,用 Python 写一个简单的脚本就能跑起来:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Chrome()
try:
browser.get('https://www.baidu.com')
input = browser.find_element_by_id('kw')
input.send_keys('Python')
input.send_keys(Keys.ENTER)
wait = WebDriverWait(browser, 10)
wait.until(EC.presence_of_element_located((By.ID, 'content_left')))
print(browser.current_url)
print(browser.get_cookies())
print(browser.page_source)
finally:
browser.close()
Selenium 还支持多种 DOM 节点定位方式,随便挑一种:
- id 选择器:
find_element_by_id - class 选择器:
find_elements_by_css_selector - xpath 选择器:
find_element_by_xpath - browser:浏览器对象,直接操控
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first = browser.find_element_by_id('q')
input_second = browser.find_elements_by_css_selector('#q')
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first, input_second, input_third)
browser.close()
API 测试
UI 测试只是冰山一角,真正决定应用灵魂的是 API。没有 API 的数据支撑,前端页面再花哨也是空壳。所以做自动化测试,API 层绝对不能落下。
手头如果有趁手的 API 工具,比如 Apifox,整个过程会顺畅很多。
使用 Apifox 进行 API 自动化测试
创建请求、设置预期、单个测试
先在 Apifox 里创建一个请求,填上接口名、路径、请求方法,这是基本功。然后设置测试条件——可以用断言,也可以用脚本。比如通过脚本判断返回数据的正确性,看它是否符合预期。

如果只是几个接口,单个跑跑倒也无妨。但要是几十个接口一个个点,恐怕要累到手软。这时候就该上自动化测试了。
自动化测试
Apifox 的自动化测试功能很直接:把所有接口导入到测试用例,设置好循环数、延迟时间、运行环境、线程数等参数,点一下运行,就能批量跑起来。

运行结束后会生成完整的测试报告,既能看到整体的通过率,也能逐个接口查看具体结果。

关于 Apifox
Apifox 是一个一体化 API 协作平台,集文档、调试、Mock、自动化测试于一身。用一套工具搞定整个 API 生命周期,避免了在不同软件之间切换带来的数据不一致问题。对于团队协作来说,这种统一性确实能省去不少烦恼。

