如何获得所有的图像在页面上的剧作家?我只能得到一个(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);
});
节点版本12.16.1
6条答案
按热度按时间sg2wtvxw1#
还有另一种方法可以使用从文档中读取的元素列表,我更喜欢https://playwright.dev/docs/locators#lists
因此,您只需使用page.locator进行选择,然后,您可以使用for循环与每个元素进行交互,或者使用.nth()选择所需的元素
gajydyqb2#
对于计数,当试图避免使用
await page.$$(selector);
时,另一种选择是直接使用LocatorAssertion:正式文件链接
y53ybaqx3#
Locator似乎是当前的前进方向,不鼓励使用
page.$$(img)
。改为用途:
计数:
有关https://playwright.dev/docs/locators的更多信息
g2ieeal74#
我已经找到了答案。需要使用
page.$$(selector)
而不是page.$(selector)
来像document.querySelectorAll(selector)
一样抓取。mklgxw1f5#
正如已接受的答案中提到的,您可以使用
await page.$$(selector)
。这里是该页面的链接。$$官方文档也可以使用下面的代码。
这里有一个链接到该页面。评估官方文档
093gszye6#