【问题标题】:Does Puppeteer's waitForSelector wait for child elements to load before resolving?Puppeteer 的 waitForSelector 是否在解析之前等待子元素加载?
【发布时间】:2020-03-26 04:45:55
【问题描述】:

假设我有一个类名为 .parent-element 的元素,其中包含三个子元素。

当我调用await page.waitForSelector('.parent-element'); 时,Puppeteer 是否在解析之前等待所有子元素呈现?

或者 Puppeteer 是否会在父元素的开始标签出现在 DOM 中时立即解析?

【问题讨论】:

    标签: javascript html css-selectors jestjs puppeteer


    【解决方案1】:

    当你await page.waitForSelector('.parent-element');时,Puppeteer 不会等待孩子们渲染。

    这是因为 Puppeteer 根本无法知道节点是否应该有任何子节点。

    【讨论】:

      【解决方案2】:

      Chrome 并没有真正意义上的“未封闭标签”——如果你这样做的话:

      document.getElementById('wrapper').innerHTML = '<div>Unclosed';
      console.log(document.getElementById('wrapper').innerHTML)
      &lt;div id="wrapper"/&gt;

      由于 Chrome 解析事物的方式,它会立即关闭。因此,这取决于您所说的“渲染”是什么意思,但如果您想知道是否这样做:

      document.getElementById('wrapper').innerHTML = '<div>/*a lot of stuff*/<img/></div>';
      

      如果img 标签会在wrapper 选择器存在时“存在”,那么是的。

      如果您想知道图像是否已加载,则不一定。

      【讨论】:

      • 鼓励问题发布者编辑他的问题,他显然是想问当符合选择器的节点出现时,Puppeteer 的 waitForSelector 函数是否解析,即使它没有子节点。
      猜你喜欢
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 2019-12-08
      • 2011-10-19
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多