如何获得剧作家的元素集合?
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
【讨论】:
以上是关于如何获得剧作家的元素集合?的主要内容,如果未能解决你的问题,请参考以下文章