录制浏览器请求生成 RobotFramework 代码
我们组的自动化测试用的是RobotFramework。在编写自动化测试时,大部分工作集中于一个页面,页面上有若干报表,我们需要使用特定数据源创建特定报表,然后抓取报表数据网络请求的request和response,手动写入RobotFramework中。
我们组的自动化测试用的是RobotFramework。在编写自动化测试时,大部分工作集中于一个页面,页面上有若干报表,我们需要使用特定数据源创建特定报表,然后抓取报表数据网络请求的request和response,手动写入RobotFramework中。
最近发现了一个叫 WebSlides 的东西,可以用 HTML 做出好看的 PPT 效果。
简单说,就是一个可以让我们用 HTML + CSS 做 PPT 的库。不需要复杂的工具,只要会点 HTML 基础就能搞。
在自动化测试中,我遇到了一个问题:如何测试 Canvas 图表元素?
与常规 HTML 元素不同,Canvas 是作为一个整体区域对外暴露为一个大元素,内部的图表元素(如柱状图的柱子、地图的省份)不是独立的 DOM 元素,常规的 Selenium 点击方法无法定位到 Canvas 内部的特定位置。
传统的 UI 自动化测试代码往往是这样写的:
def test_login_and_create_report():
driver.get("/login")
driver.find_element(By.ID, "username").send_keys("admin")
driver.find_element(By.ID, "password").send_keys("admin123")
driver.find_element(By.ID, "login-btn").click()
driver.get("/reports")
driver.find_element(By.ID, "new-report").click()
driver.find_element(By.ID, "report-name").send_keys("测试报表")
driver.find_element(By.ID, "save-btn").click()
assert "创建成功" in driver.page_source问题很明显:测试逻辑被一大堆底层操作淹没了,看不出主线流程。
在 UI 自动化测试中,持续维护测试脚本的成本很高。页面稍微一改动,大量的测试用例就有可能失败,需要人工修改适配。
因此,有人提出了POM(Page Object Model)设计模式。核心思维是将页面结构和测试逻辑分离,使测试代码更易于维护和扩展。
组里的自动化测试用例(接口用例)陆陆续续积累了三千多条,完整跑一遍已经需要将近3 个小时。
Robot Framework 默认是单线程顺序执行用例的,但我发现大家写得挺好,用例之间并没有依赖关系,完全可以并行执行。我发现了一个叫 Pabot 的东西,是专门用于并行执行 Robot Framework 的库。