node.js - Puppeteer 错误没有找到选择器的 Node (单击按钮)

标签 node.js button click puppeteer hidden

我尝试使用 Puppeteer 单击按钮。 带有我需要单击的按钮的网页:

<div class="submit_fields">
<input type="hidden" name="" value="Y">
<input type="hidden" name="iblock_submit" value="Y">
<input class="btn btn-warning btn-block btn-lg" onclick="gtag('event','Клик по кнопке из раздела', {'event_category': 'Передача показаний','event_label':'Передать показания'}); ym(57063811,'reachGoal','meter_reading_inner'); return true;" type="submit" name="iblock_submit" value="передать">
</div>

我的代码:

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch({
  executablePath: '/usr/bin/chromium',
  'defaultViewport' : { 'width' : 1920, 'height' : 1080 }
});

  const page = await browser.newPage();

await page.goto('https://gesbt.ru/chastnym-litsam/peredacha-pokazaniy/');

//code skipped(fill form, NO ERROR)

  await page.waitForSelector('#iblock_submit', { hidden: true}); //NO ERROR ONLY THIS ROW

  await page.click('#iblock_submit'); // GOT ERROR

错误:找不到选择器的 Node :#iblock_submit

最佳答案

根据您问题中的 html,没有 id 为 iblock_submit 的元素,这就是您输入的内容:

await page.waitForSelector('#iblock_submit', { hidden: true });
await page.click('#iblock_submit'); // GOT ERROR

如果您想查找 name="iblock_submit" 的元素,您需要输入例如这个:

await page.waitForSelector('[name="iblock_submit"]', { hidden: false });
await page.click('[name="iblock_submit"]');

编辑:

您需要了解网站上发生了什么,并尝试进行试验。正确的选择器并不是您唯一需要做的事情。等待事情发生是另一件事需要考虑:

await page.goto('https://gesbt.ru/chastnym-litsam/peredacha-pokazaniy/', { waitUntil: 'networkidle0' });

这可能是一个很好的做法,您可以在您的上下文中尝试一下,看看是否有帮助。您可以在文档中看到所有可以等待的选项:https://github.com/puppeteer/puppeteer/blob/v5.4.1/docs/api.md#pagegotourl-options

关于node.js - Puppeteer 错误没有找到选择器的 Node (单击按钮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64846461/

相关文章:

java - 2 个按钮,1 个用于启动 MP3 文件,1 个用于停止

javascript - 区分 IE 和 Firefox 中的鼠标左键和右键单击

javascript - 通过点击功能切换

android - 无法单击 PopupWindow 中 Button 上的按钮

javascript - moment.js isoWeek 不适用于 Heroku 实例

node.js - 在 node.js 中使用递归模式循环

javascript - MongoDB 通过查找查询随机选择 5 个文档

node.js - 上传的文件必须是非空的 zip(服务 : AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException;

css - 如何在元素并排而不是堆叠时在元素之间添加边距? [ Bootstrap ]

css - 简单的 CSS 问题