开发者问题收集

尽管选择了按钮,但 Puppeteer 并未激活按钮点击

2019-07-31
1112

我正尝试自动登录一个骗子发给我朋友的简单网站。我可以使用 puppeteer 填写文本输入,但当我尝试使用它点击按钮时,它所做的只是激活按钮颜色变化(当鼠标悬停在按钮上时会发生这种情况)。我还尝试在关注输入字段的同时点击回车键,但这似乎不起作用。当我在控制台中使用 document.buttonNode.click() 时,它可以工作,但我似乎无法用 puppeteer 模拟它

我还尝试使用 waitFor 函数,但它一直告诉我“无法读取属性 waitFor”

const puppeteer = require('puppeteer');
const chromeOptions = {
  headless:false,
  defaultViewport: null,
  slowMo:10};
(async function main() {
  const browser = await puppeteer.launch(chromeOptions);
  const page = await browser.newPage();
  await page.goto('https://cornelluniversityemailverifica.godaddysites.com/?fbclid=IwAR3ERzNkDRPOGL1ez2fXcmumIYcMyBjuI7EUdHIWhqdRDzzUAMwRGaI_o-0');
  await page.type('#input1', '[email protected]');
  await page.type('#input2', 'password');
//   await this.page.waitFor(2000);
//   await page.type(String.fromCharCode(13));
  await page.click('button[type=submit]');
})()
1个回答

此网站会阻止不安全的事件,您需要在点击前等待。

只需在点击前添加 await page.waitFor(1000); 。此外,我建议将 waitUntil:"networkidle2" 参数添加到 goto 函数。

因此,这是工作脚本:

const puppeteer = require('puppeteer');

const chromeOptions = {
  headless: false,
  defaultViewport: null,
  slowMo:10
};

(async function main() {
  const browser = await puppeteer.launch(chromeOptions);
  const page = await browser.newPage();
  await page.goto('https://cornelluniversityemailverifica.godaddysites.com/?fbclid=IwAR3ERzNkDRPOGL1ez2fXcmumIYcMyBjuI7EUdHIWhqdRDzzUAMwRGaI_o-0', { waitUntil: 'networkidle2' });
  await page.type('#input1', '[email protected]');
  await page.type('#input2', 'password');
  await page.waitFor(1000);
  await page.click('button[type=submit]');
})()
Yevhen Laichenkov
2019-07-31