推荐使用定位器来选择元素并与其交互。定位器封装了有关如何选择元素的信息,它们允许 Puppeteer 自动等待元素出现在 DOM 中并处于执行操作的正确状态。您始终使用 page.locator() 或 frame.locator() 函数实例化定位器。如果定位器 API 未提供您需要的功能,您仍然可以使用较低级别的 API,例如 page.waitForSelector() 或 ElementHandle。
locator()
下表总结了我对和之间区别的理解$()
:
Page 方法 |
返回类 | 等待元素出现在 DOM 中? | 需要await ? |
输入法 |
---|---|---|---|---|
locator() |
Locator |
是(重试直到成功或超时) | 不 | 只有click ,,,hover scroll |
$() |
ElementHandle |
不 | 是的 | 各种各样的 |
我有一些问题:
- 如果
locator()
等待元素出现在 DOM 中,那么是不是必须有await
?同样,如果$()
不等待,那么是不是就不需要await
? - 为什么
$()
一个不等待元素出现在 DOM 中的方法比等待元素出现在 DOM 中的方法拥有更多的设备输入方法? - 是不是在引擎盖下面是和
locator()
的组合?waitForSelector()
$()