1. 截图分辨率、缩放、滚动和窗口变化会怎样造成坐标偏移,执行前如何二次定位
截图分辨率、缩放、滚动和窗口变化会怎样造成坐标偏移,执行前应如何二次定位?
- 理解坐标偏移的来源
- 设计坐标到元素的安全映射
- 执行前二次定位
坐标偏移的主要来源包括:分辨率与 DPI 缩放(不同屏幕/缩放比下同一逻辑坐标对应不同物理像素)、滚动(页面滚动后元素位置变化)、窗口尺寸变化(布局重排导致元素位移)、CSS transform 与缩放。为避免偏移,执行前应做二次定位:先把屏幕坐标转换为视口坐标(考虑缩放因子与滚动偏移),再用 elementFromPoint 或视觉/DOM 交叉验证确认该坐标处确为目标元素,而非仅凭截图坐标直接点击。具体做法:截图时记录视口与设备像素比、滚动位置、窗口尺寸;换算坐标时通过 scrollX/scrollY 和 devicePixelRatio 修正;点击前用 elementFromPoint 验证命中元素,与预期目标匹配,匹配失败则重新定位。这样即使坐标有偏移也能在动作前拦截。
坐标偏移的根源是"坐标系不一致"。截图坐标、视口坐标、DOM 坐标、设备像素坐标之间存在转换关系,执行前必须统一坐标系并做命中测试二次定位,避免盲目点击。