我有一个包含 25 个可点击元素的列表。我需要在新选项卡中打开它们中的每一个,抓取在新选项卡中打开的新页面,然后将其关闭。然后转到下一个元素,并对列表中的每个元素执行相同的操作。
但是,我在通过单击链接在新选项卡中打开链接时遇到问题。我设法打开然后,page.goto('link")但我想让它更加人性化,而不是将链接粘贴到新选项卡中,我想通过单击打开。
let accountsClickElements = await page.$$eval(".result-lockup__name a", el => el.map(x => x.getAttribute("id")));
for (let i = 0; i<25; i++) {
await autoScroll(page);
await page.waitFor(3000);
let id = companies[i];
await page.focus("#"+accountsClickElements[0]);
accountsClickElements = await page.$$eval(".result-lockup__name a", el => el.map(x => x.getAttribute("id")));
await page.waitFor(3000);
await page.focus("#"+accountsClickElements[i]);
await page.click("#"+accountsClickElements[i]);
await page.waitFor(2000);
console.log("#"+companies[i].linid);
await page.goBack();
} `
Run Code Online (Sandbox Code Playgroud)
这是一段在同一选项卡中打开链接的代码,但一段时间后,它不会占用所有 25 个元素,并且由于每次打开页面时 id 都会发生变化,因此出现错误。
我已经像这样更改了代码,因此不是单击元素,而是单击 href 属性。目标 _blank 属性在那里,但它仍然在同一个选项卡上打开。你能指出原因吗?
await page.$$eval('.result-lockup__name a', el => el.map(x => x.setAttribute("target", "_blank")));
let accountsClickElements = …Run Code Online (Sandbox Code Playgroud)