如何在li中获取多个值

问题描述

我正在与Playwright刮目录。我可以像这样获得每个“块”内容

let nestedElementsToCapture = ['.title','.subhead','#url']
    this.page.$$eval('li',(spans) =>
        spans.map((span) => span.innerText)
    );

我不知道如何在每个“块”中获取已定义的嵌套元素。

例如: li > .titleli > .subheadli > #url

我将如何为每个块捕获这些元素?现在,我得到的只是一大串文本,其中包含每个li

中的所有文本

解决方法

我会将那个数组传递给$$eval函数,解决该函数中的所有内容,然后返回某种对象。
我将参数名称设置为childSelectors,因此很明显您无法访问函数内部的nestedElementsToCapture变量。

let nestedElementsToCapture = ['.title','.subhead','#url']
this.page.$$eval(
   'li',(spans,childSelectors) => {
        return spans.map((span) => {
            let result = { 
                title = span.querySelector(childSelectors[0]).innerText,subHead = span.querySelector(childSelectors[1]).innerText,url = span.querySelector(childSelectors[2]).innerText,};
      
            return result;
        });
    },nestedElementsToCapture);