一、定位不同:
- find_element: 是一个立即执行的动作,代码执行到这一行,马上到网页上面找,找不到就直接报错
- page.locator: 只有真正调用查找的元素时,本行代码才会去寻找,并且如果元素还没有出现,它会自动重试
二、locator的优势:
- 自动重试
- 强大的过滤功能
- 链式调用
三、locator和query_selector的区别:
- 多元素操作: locator 可以一键操作多个元素。
- 严格模式: 如果你的定位器匹配到了 2 个元素,但你调用了 click(),它会直接报错,防止你点错。
- 稳定性: query_selector 返回的是 ElementHandle(元素句柄)。如果页面刷新了,这个句柄就失效了(Stale Element)。而 locator 每次操作都会重新定位,它是"活的",不会因为页面局部刷新而失效。