如何获得剧作家的元素集合?

Posted

技术标签:

【中文标题】如何获得剧作家的元素集合?【英文标题】:How to get a collection of elements with playwright? 【发布时间】:2020-08-10 16:49:00 【问题描述】:

如何通过playwright获取页面上的所有图片? 我只能使用以下代码获得一个 (ElementHandle),但不能获得一个集合。

const  chromium  = require("playwright");

class Parser 
  async parse(url) 
    const browser = await chromium.launch();
    const page = await browser.newPage();
    await page.goto(url);
    await page.waitFor("img");
    // TODO: get somehow collection of elements
    return await page.$("img");
  


module.exports = Parser;

在很远的另一个模块的某个地方:

const Parser = require("./path/to/dir/Parser.js");
const parser = new Parser();

parser
    .parse(body.url)
    .then(elemHandle => 
      // here I get only one ElementHandle object, but suppose to get an array or collection
    )
    .catch(err => 
      throw new Error(err);
    );

节点 v.12.16.1

【问题讨论】:

【参考方案1】:

我已经找到答案了。需要使用page.$$(selector)而不是page.$(selector)来抓取document.querySelectorAll(selector)

【讨论】:

@EugZ- 长度怎么样? 对于长度使用 .length 。例如: const counts = await page.$$(selector);期望(counts.length).toBe(3)【参考方案2】: 供剧作家使用:await page.$$(selector);

【讨论】:

【参考方案3】:

如已接受的答案中所述,您可以使用await page.$$(selector)。 这是link to the page.$$ official documentation

你也可以使用下面的代码。

const result = await page.evaluate(selector => document.querySelectorAll(selector) , selector);

这是link to the page.evaluate official documentation

【讨论】:

以上是关于如何获得剧作家的元素集合?的主要内容,如果未能解决你的问题,请参考以下文章

如果元素具有特定颜色,如何与木偶师或剧作家核对?

Laravel 查询以获得具有至少一个数组元素的结果?

如何使用剧作家或柏树选择蚂蚁设计选择选项

[专栏作家] Lua写UI的一些使用心得

如何从剧作家那里读取文本框值

OpenOffice.org 作家 [关闭]