loginLinkedin
带我进入登录页面,然后为我返回伪造者页面,该页面随后被分配给root用户,因此我仍然可以有更多选择来使用它。
const root = await loginToLInkined("https://www.linkedin.com/login");
await root.goto(url);
max_page = await getMaxPage(root);
console.log("max page",max_page)
然后我goto(url)
url
是我需要转到的另一页。
此后,我以root为参数调用getMaxPage(root)
,以便可以在该函数中evaluate()
const getMaxPage = async root => {
const maxPage = await root.evaluate(()=> {
return document.querySelector(
"li.artdeco-pagination__indicator:nth-last-Child(1)"
);
});
console.log(maxPage)
return parseInt(maxPage.innerText);
};
问题是当我console.log(maxPage)返回未定义状态时,我意识到添加根s参数实际上并没有达到我的预期效果。
我做错了什么以及如何正确完成。
maxpage
答案 0 :(得分:2)
问题出在从page.evaluate()
返回的 中:
const maxPage = await root.evaluate(()=> {
return document.querySelector(
"li.artdeco-pagination__indicator:nth-last-Child(1)"
);
});
这是一个DOM节点,它是一个不能serialized的复杂对象,并且返回值必须可序列化才能从Chromium返回到节点。
因此,要解决此问题,所有以后的脚本仅返回所需的内容,并且可以JSON.stringify
进行正确无误的返回。正如pguardiario在注释中正确指出的,在这种情况下,足以从该节点返回innerText
:
const maxPage = await root.evaluate(()=> {
return document.querySelector("li.artdeco-pagination__indicator:nth-last-Child(1)").innerText;
});