Puppeteer 无法单击登录按钮

Puppeteer can't click sign-in button

目前正在构建一个允许我登录网站的 puppeteer 程序,但是,在输入登录后,我似乎无法让 puppeteer 单击登录按钮或 matter.I 具有的任何按钮使用开发工具,将鼠标悬停在有问题的按钮上,并输入它的 class =“登录按钮”,但它仍然无法在我 运行 的无头浏览器上工作。它在错误 sheet 上表示没有找到选择器的节点:button[type=submit]。这是我编码的第三天,希望能得到任何帮助。谢谢!请在下面留下任何建议,我想知道如何让 puppeteer 在屏幕上点击按钮,但我遇到了麻烦。

注意:我试过 await page.$eval("button[class='sign-in-button']", elem => elem.click()); 没用..

sign-in-button when hovered over

this is what it says in elements in dev tools

您的 CSS selector 指向 button 元素而不是 input 元素,因此未找到。

将 selector 更改为此应该有效:

await page.$eval("input[class='sign-in-button']", elem => elem.click());
短classselect或

或者您可以通过 classname select 它,因此如果 input 元素将更改为 button 元素,代码将不会中断。每当你在 css selector 之前输入点 . 时,它会自动将其视为 class selector.

await page.$eval(".sign-in-button", elem => elem.click());

JS句柄

您可以使用 page.$ 接收按钮句柄并单击它,而不是在浏览器上下文 (DOM) 中单击元素。

// use $ method for receiving a handle to your sign-in button/input
const btn = await page.$('.sign-in-button')

// click it using the `puppeteer` api instead of native DOM clicking.. 
btn.click()