前言
ElementHandle 表示页内 DOM 元素。ElementHandles 可以使用page.query_selector()方法创建。
Locator和ElementHandle之间的区别在于后者指向特定元素,而 Locator 捕获如何检索该元素的逻辑。
如果你能理解ElementHandle 和 Locator 定位机制,那也就明白了selenium的定位方式 和 playwright 定位方式的本质区别。
ElementHandle 元素句柄
ElementHandle 表示页内 DOM 元素,ElementHandle 实例可以用作page.eval_on_selector()和page.evaluate()方法中的参数。
可以使用page.query_selector()方法创建。
href_element = page.query_selector("a")
href_element.click()
在下面的示例中,句柄指向页面上的特定 DOM 元素。如果那个元素改变了文本或者被 React 用来渲染一个完全不同的组件,句柄仍然指向那个 DOM 元素。这可能会导致意外行为。
handle = page.query_selector("text=Submit")
handle.hover()
handle.click()
学到这里大家也就明白了,为什么用selenium去循环操作页面元素的时候,只有第一次能操作,当页面刷新时,你定位的对象是上个页
本文探讨了Playwright中的ElementHandle和Locator的区别,解释了为何理解它们对于掌握Selenium与Playwright定位方式至关重要。ElementHandle指向特定DOM元素,可能在页面更新后导致意外行为。相反,Locator每次使用时都会根据选择器重新定位最新DOM元素,提供更稳定的定位体验。建议使用Locator而非ElementHandle进行元素操作。
订阅专栏 解锁全文

2万+

被折叠的 条评论
为什么被折叠?



