【问题标题】:How to get all elements in a list in puppeteer如何在 puppeteer 中获取列表中的所有元素
【发布时间】:2020-11-03 10:36:12
【问题描述】:

我有一个包含文件夹列表的页面容器。我想一一点击它们。附件是带有页面源的页面截图。

我试过下面的代码:

   let elements = document.getElementsByClassName('document-container')

   for (let element of elements)
   {
    await  element.click();
   }
    

但这不起作用。

【问题讨论】:

    标签: javascript puppeteer playwright


    【解决方案1】:

    您可以使用page.$$ 将.document-container 元素的所有实例收集为element handles。 它在页面上下文中运行 document.querySelectorAll 。

    然后您就可以使用elementHandle.click 来迭代点击(正如您已经尝试过的那样)。

    const elHandleArray = await page.$$('.document-container')
    
    for (const el of elHandleArray) {
      await el.click()
    }
    

    【讨论】:

      【解决方案2】:

      您在哪里使用 puppeteer 启动了当前页面? 你必须使用page.click(elementToClick);。

      在这里,您试图获取指定div 内的元素。也就是说,你需要获取指定容器div的孩子。

      要获取 HTML 元素的所有子元素, 您始终可以使用.children 属性,它将返回另一个元素内的元素数组。并且会返回一个空数组,以防父元素没有子元素。

      在您的代码中,您可以尝试这样的操作:

      let container = document.getElementByClassName('document-container');
      
      let elements = container.children;
      
      for(element in elements){
        element.click();
      }
      
      

      看看它是否有效。

      【讨论】:

      • 一开始就启动。我只想要一个使用随附的屏幕截图页面源的解决方案。 div 有 class name="someContainier" 。我想获取它的所有元素。
      • 里面的元素?
      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2021-01-19
      • 2018-04-21
      • 2018-07-04
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      相关资源
      最近更新 更多