如何使用 playwright 捕获 <table> 内容

GBa*_*nia 7 javascript webautomation playwright

什么是正确的查询选择器来获取所有标签并迭代以捕获表数据?下面的查询选择器无法在 DOM 中找到元素。先感谢您

const allusers = await page.$$eval('tbody .MuiTableRow-root', (users) => {
    return users.map(user => {
        const email = user.querySelector('tr:nth-child(1)');
        const edition = user.querySelector('tr:nth-child(2)');
        return {
            email: email.innerText.trim(),
            edition: edition.innerText.trim()
        };
    });
});

console.log('${allusers.length} users found');
console.dir(allusers);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

GBa*_*nia 8

好吧,伙计们,俗话说,细节决定成败。

\n

两件事情:

\n

\xe2\x9c\x94\xef\xb8\x8f 是:td,而不是:tr,因为:td:tr

\n

innerText\xe2\x9c\x94\xef\xb8\x8f元素上没有。我们需要通过以下方式调用访问值textContent

\n

这是工作片段:

\n
const allusers = await page.$$eval('tbody .MuiTableRow-root', (users) => {\n    return users.map(user => {\n        const email = user.querySelector('td:nth-child(1)');\n        const edition = user.querySelector('td:nth-child(2)');\n        return {\n            email: email.textContent.trim(),\n            edition: edition.textContent.trim()\n        };\n    });\n});\n\nconsole.log(`${allusers.length} users found`);\nconsole.dir(allusers);\n
Run Code Online (Sandbox Code Playgroud)\n