先给结论:自动导出遗漏分页时,不要只盯“总条数是否等于导出条数”,而要同时检查分页边界、排序稳定性和去重键。对大多数资料页或列表页,更稳妥的做法是导出后按唯一标识做集合比对;只有当页面明确提供稳定游标且不允许跳页时,才适合用“逐页翻到底”的方式确认完整性。
把待导出的页面打开,观察翻页链接的形态。常见有三类:页码式、游标式、滚动加载式。页码式通常能看到 page=2 这类参数,游标式会带一个长串令牌,滚动加载式则没有可见页码。
这一步决定后续检查方式。页码式可以用首尾页加中间抽样验证;游标式只能顺着令牌走,不能跳页;滚动加载式最容易漏,因为页面高度变化会让自动脚本误判“已经到底”。
如果页面同时存在筛选条件和分页,先固定筛选条件再导出。筛选条件变化会改变结果集,导致前后两次导出的条数无法直接比较。
第一种做法是逐页导出,最后把每页结果合并,再用唯一键去重,看总数是否与页面显示一致。它的代价是请求次数多、耗时长,遇到限流或验证码会中断。适合结果集不大、页面明确显示总条数、且允许稳定翻页的场景。
第二种做法是只导出首屏、末屏和若干中间页,再对唯一键做集合比对。它的代价是可能漏掉中间某页的异常,适合结果集很大、页面不显示总条数、或翻页成本很高的场景。选择条件是:你能接受“高概率完整”而不是“证明完整”。
一个可区分的判断依据是:如果页面在翻到最后一页时会给出“没有更多”或空结果,那么逐页翻到底更可靠;如果最后一页之后仍返回重复内容,说明分页边界不稳定,此时抽样加去重比对更实际。
假设你手里有一份商品列表,每页 20 条,页面显示共 137 条。自动导出后得到 140 条,其中 3 条重复。这时不要直接认为“多了 3 条就是完整”。先检查重复项的唯一键是否相同,再检查是否有条目在翻页过程中被跳过。
这个动作的结果会直接影响下一步:如果抽样页全部命中,可以认为导出基本完整;如果存在未命中,就要检查自动脚本是否在翻页时提前终止,或者是否因为排序变化导致同一页内容漂移。
排序不稳定。如果页面默认按更新时间排序,而导出期间有新内容插入,同一页可能重复或跳过。解决方式是尽量使用固定排序字段,或在导出前记录排序条件。
去重键选错。用标题或名称去重会把同名不同项合并,用行号去重则无法发现重复。优先选系统生成的唯一编号。
把条数相等当成完整。条数相等只能说明数量对得上,不能说明内容对得上。必须做集合比对,而不是只比总数。
如果导出工具本身不提供去重和比对功能,可以把结果导出为文本或表格,再用脚本按唯一键排序和比较。具体工具的功能和限制需要以你实际使用的版本为准,不要假设某个按钮一定存在。
当抽样页和边界页的标识全部出现在导出结果中,且去重后的数量与页面可见总数一致时,可以停止。若页面不显示总数,则以“连续三页抽样全部命中且无重复”为停止条件,并记录抽样页码,方便下次复核。
如果导出过程中出现请求失败或页面返回异常,不要用失败前的部分结果继续比对。先重新导出失败区间,再合并检查。完整性检查的目标不是证明绝对无遗漏,而是把遗漏风险降到可接受范围,并留下可复查的记录。