尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SeleniumBase MasterQA 实战指南:用自动化 + 人工验证打造混合测试工作流

SeleniumBase MasterQA 实战指南:用自动化 + 人工验证打造混合测试工作流 SeleniumBase MasterQA 实战指南用自动化 人工验证打造混合测试工作流【免费下载链接】SeleniumBaseAPIs for browser automation, testing, and bypassing bot-detection. Includes CDP Mode: A stealthy configuration for chromium that passes every bot detection test.项目地址: https://gitcode.com/GitHub_Trending/se/SeleniumBaseMasterQA 是 SeleniumBase 内置的自动化 人工验证混合测试方案自动化代码负责执行浏览器操作跳转、点击、输入、高亮在每一个关键检查点暂停弹出对话框向测试人员提问由人工确认页面状态是否正确最后汇总生成包含截图与日志的结果报告。读完本文你将掌握 MasterQA 的导入方式、self.verify()验证点的用法、运行命令、结果报告解读以及底层实现原理与可调参数能够直接在项目里写出可运行的混合测试。MasterQA 是什么自动化与人工 QA 的融合在常规 UI 自动化测试中断言完全由代码完成但有些东西很难用断言精确表达——这张 webcomic 是否有趣这个设备页面是否展示了 4 台电脑页面整体观感是否正常。MasterQA 正是为解决这类只能由人判断的场景而生。从源码看MasterQA 类 直接继承自 SeleniumBase 的BaseCase因此它天然拥有 SeleniumBase 的全部自动化能力goto、click、type、highlight、save_screenshot等同时在其上叠加了人工验证机制。其核心理念如文档所述将自动化与人工验证步骤结合MasterQA combines automation with manual verification steps。关键区别只有一个 importfrom seleniumbase import MasterQA # 混合测试自动化 人工验证 # from seleniumbase import BaseCase # 纯自动化测试传统写法之后测试类继承MasterQA而非BaseCase其余写法和普通 SeleniumBase 测试完全一致。MasterQA由 seleniumbase/init.py 导出安装 SeleniumBase 后即可直接使用。从零开始最小可运行的 MasterQA 测试仓库中提供了两个可直接运行的示例位于 examples/master_qa/ 目录下。basic_masterqa_test_0.py 是最小示例from seleniumbase import MasterQA MasterQA.main(__name__, __file__) class MasterQATests(MasterQA): def test_masterqa(self): self.goto(https://seleniumbase.io/devices/) self.highlight(div.mockup-wrapper) self.verify(Do you see 4 computer devices?) self.goto(https://seleniumbase.io/demo_page) self.highlight(table) self.verify(Do you see elements in a table?) self.goto(https://xkcd.com/1700/) self.highlight(#comic) self.verify(Do you see a webcomic?)要点解读MasterQA.main(__name__, __file__)入口调用等价于普通测试中的BaseCase.main(...)负责启动测试运行器self.goto(...)/self.highlight(...)普通 SeleniumBase 自动化操作highlight会把元素高亮显示方便人工快速定位当前检查目标self.verify(...)插入一个人工验证点。每执行到一处verify浏览器会弹出对话框等测试人员回答后才继续执行下一步。masterqa_test_1.py 是更长、更贴近真实业务流的示例它包含循环点击翻页、跳转、输入文本等自动化操作并在多个关键节点插入验证点例如self.verify() # 不传参数使用默认问题 self.verify(Can you find the moon?) # 自定义问题 self.verify(Do the drones look safe?) self.verify(Do you see Octocat in a Jedi knight robe?) self.verify(Does the page say Abnormal Expressions?)从零运行示例文档给出了完整的环境搭建与运行流程git clone https://github.com/seleniumbase/SeleniumBase.git cd SeleniumBase pip install . cd examples/master_qa pytest basic_masterqa_test_0.py pytest masterqa_test_1.pyexamples/master_qa/目录下自带的 pytest.ini 会为 pytest 提供运行配置例如--capturetee-sys实时显示控制台输出、测试文件/类/函数发现规则python_files、python_classes、python_functions以及 marker 注册表因此直接pytest xxx.py即可运行。注意MasterQA 依赖浏览器窗口进行人工弹窗确认默认无法在 headless无头模式下完成人工验证。源码中verify()在 headless 模式下会直接跳过人工检查并打印警告见下文运行细节一节。编写自己的 MasterQA 测试方法与规则在普通 SeleniumBase 测试的基础上只需记住两条规则导入与继承from seleniumbase import MasterQA测试类继承MasterQA插入验证点在需要人工确认的自动化步骤之后调用self.verify()。self.verify()支持两种调用形式来自 masterqa_test_1.pyself.verify() # 使用默认问题Does the page look good? self.verify(Can you find the moon?) # 使用自定义问题从源码实现看master_qa.pyverify()的参数处理逻辑为不传参数时使用默认验证消息MASTERQA_DEFAULT_VALIDATION_MESSAGE值为Does the page look good?传参数且文本不含问号时问题会被拼装为你的文本 Approve?例如self.verify(Check the logo)会显示Check the logo Approve?传参数且文本已含问号时直接使用该文本作为问题。因此建议在自定义问题时直接写成完整的问句如Can you find the moon?这样对话框中会原样显示你的问题。验证对话框的交互方式验证点弹出的是基于 jquery_confirm 库的对话框源码见 __jq_confirm_dialog标题为Manual Check #NN 为当前验证点序号两个按钮绿色YES / PASS与红色NO / FAIL支持键盘快捷键y、p、1表示通过n、f、2表示失败如果 jquery_confirm 库加载失败代码会自动降级为浏览器原生confirm弹窗__manual_page_check保证任何环境下都能完成人工确认。选择NO / FAIL时源码会自动对当前页面截图保存为failed_check_序号.png供后续分析。结果报告如何读懂一次运行当所有验证点回答完毕、测试运行结束后浏览器会自动打开一张 HTMLResults Page结果页。结果页顶部是汇总表包含四行关键指标生成逻辑见 __process_manual_check_results指标含义CHECKS PASSED人工验证通过的数量CHECKS FAILED人工验证失败的数量显示为红色TOTAL VERIFICATIONS验证点总数INCOMPLETE TEST RUNS自动化步骤中断的测试数非零时显示为红色文档特别提醒关注Incomplete Test Runs这一行该值不为零说明某个自动化步骤执行失败了——例如脚本尝试对不存在的元素执行操作click、type等抛出异常。在混合测试场景下区分两类失败非常重要人工验证失败页面正常加载但测试人员判定内容不对 → 计入CHECKS FAILED自动化步骤失败脚本本身跑挂了 → 计入INCOMPLETE TEST RUNS。对应的自动化步骤失败时源码会保存automation_failure_N.png截图见 __add_failure。结果页还包含LOG FILES LINK指向本次运行的日志目录链接RESULTS TABLE指向results_table.csv的链接失败明细表列出每张失败截图failed_check_N.png/automation_failure_N.png及其对应的失败页面 URL。文档明确说明results_tableCSV 文件是一张电子表格包含每一次失败人工失败与自动化失败的详细信息。从源码看该 CSV 的每一行记录包含 8 个字段Num, Result, Screenshot, URL, Browser, Epoch Time, Verification Instructions, Additional Info即验证点序号、结果Success / FAILED! / ERROR!、截图文件名、页面 URL、浏览器、时间戳、验证指令、附加信息。所有人工验证结果包括成功项都会写入该文件便于回溯整个测试过程。报告相关的文件位置由 seleniumbase/config/settings.py 定义latest_report/最新一次运行的报告目录archived_reports/历史报告归档目录每次运行会把上一次的latest_report归档为带时间戳的子目录report.html结果页文件名results_table.csv结果明细表文件名。看完报告后关闭 Results Page 窗口即可结束测试。若希望报告页自动关闭可在测试中调用self.auto_close_results()源码见 auto_close_results在 headless 模式下报告页会自动关闭。可配置参数四个 MasterQA 专属设置MasterQA 的所有专属行为都集中在 seleniumbase/config/settings.py 的#####----- MasterQA SETTINGS -----#####段落中共有 4 个配置项配置项默认值作用MASTERQA_DEFAULT_VALIDATION_MESSAGEDoes the page look good?self.verify()不传参数时显示的默认问题MASTERQA_WAIT_TIME_BEFORE_VERIFY0.5秒验证弹窗出现前的等待时间给测试人员留出看清完整页面的时间MASTERQA_START_IN_FULL_SCREEN_MODEFalse是否在测试开始时将浏览器窗口最大化MASTERQA_MAX_IDLE_TIME_BEFORE_QUIT600秒人工长时间无操作时的最大空闲时间超时自动退出并报错其中MASTERQA_WAIT_TIME_BEFORE_VERIFY文档明确说明可以在命令行覆盖例如pytest masterqa_test_1.py --verify_delay1.0从源码__manual_page_check可以看到verify_delay存在时优先使用命令行传入值否则回退到配置文件的等待时间。这几个参数也可以在本地settings.py中直接修改后生效。运行细节与工作机制源码级验证流程的完整调用链一次self.verify()的底层执行流程如下对应源码 verify 与 __manual_page_checkverify()递增check_count若处于 headless 模式则打印警告并跳过人工检查源码注释WARNING: MasterQA skips manual checks in headless mode!等待WAIT_TIME_BEFORE_VERIFY或--verify_delay秒确保页面完整呈现等待页面ready_state完成优先激活 jquery_confirm 库弹出对话框加载失败则降级为原生confirm轮询等待人工应答jconfirm.instances.length归零表示已应答根据应答记录结果成功则计入manual_check_successes失败则截图failed_check_N.png并记录为 FAILED!将一条 8 字段记录追加到page_results_list最终写入results_table.csv。测试结束时的收尾逻辑tearDownmaster_qa.py阶段会若测试抛出了异常__has_exception检测到调用__add_failure将本次运行记为incomplete_runs 1并保存automation_failure_N.png截图调用__process_manual_check_results生成汇总报告打印控制台结论SUCCESS: Everything checks out OKAY!/WARNING: Not all tests passed manual inspection!等、写入results_table.csv、生成report.html结果页并打开。setUpmaster_qa.py阶段会读取上述 4 个 MasterQA 配置、清理上一次遗留的失败截图与旧报告并在START_IN_FULL_SCREEN_MODE开启时调用maximize_window()。超时保护__wait_for_special_alert_absentmaster_qa.py实现了人工应答的超时保护若MAX_IDLE_TIME_BEFORE_QUIT默认 600 秒内测试人员始终未操作弹窗浏览器会被强制退出并抛出X seconds passed without human action! Stopping...异常避免测试无限挂起。在项目中落地 MasterQA 的建议只对人才能判断的检查点使用verify()布局美观、图片正确性、文案语气、设备外观等其余断言仍交给 SeleniumBase 的self.assert_*系列避免每个步骤都弹窗拖慢节奏为每个验证点写清楚问题好的问题让测试人员 1 秒内可回答建议直接以问号结尾例如Does the page show a green success banner?把验证点放在元素高亮之后示例中普遍先highlight再verify人工一眼就能看到被检查的目标元素区分两类失败记住Incomplete Test Runs表示自动化步骤故障通常是选择器失效、元素不存在需要在脚本层修复CHECKS FAILED才表示页面内容需要人工干预用 CSV 做回归留痕results_table.csv记录了每步的截图、URL、浏览器与时间戳可定期归档到archived_reports/形成人工验收的审计记录。MasterQA 的完整实现位于 seleniumbase/masterqa/master_qa.py配置位于 seleniumbase/config/settings.py可运行的示例与 pytest 配置位于 examples/master_qa/三处结合阅读可以完整理解从自动化执行 → 人工弹窗确认 → 截图落盘 → 报告生成的整条链路。【免费下载链接】SeleniumBaseAPIs for browser automation, testing, and bypassing bot-detection. Includes CDP Mode: A stealthy configuration for chromium that passes every bot detection test.项目地址: https://gitcode.com/GitHub_Trending/se/SeleniumBase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表