首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Puppeteer表单提交;按名称而不是id选择输入

基础概念

Puppeteer 是一个 Node.js 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。它非常适合用于自动化浏览器操作,如网页截图、网络请求拦截、表单提交等。

表单提交

在 Puppeteer 中,表单提交可以通过多种方式实现,包括使用 page.type 方法填充表单字段,然后使用 page.click 方法点击提交按钮,或者直接调用 page.evaluate 在页面上下文中执行 JavaScript 代码来提交表单。

按名称选择输入

在 HTML 表单中,每个输入元素都可以通过 idname 属性来唯一标识。如果你想通过元素的 name 属性而不是 id 来选择输入,可以使用 Puppeteer 的 page.$page.$$ 方法结合 CSS 选择器或 XPath 表达式。

示例代码

以下是一个使用 Puppeteer 按名称选择输入并提交表单的示例:

代码语言:txt
复制
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // 导航到目标网页
  await page.goto('https://example.com/form');

  // 按名称选择输入框并填充数据
  await page.type('input[name="username"]', 'myUsername');
  await page.type('input[name="password"]', 'myPassword');

  // 点击提交按钮
  await page.click('button[type="submit"]');

  // 等待页面跳转或其他响应
  await page.waitForNavigation();

  // 关闭浏览器
  await browser.close();
})();

应用场景

这种按名称选择输入的方法在以下场景中特别有用:

  • 当表单元素的 id 动态生成或不唯一时。
  • 当页面上有多个相同类型的输入元素,但只有通过 name 属性才能区分它们时。
  • 当需要编写更通用的自动化脚本,可以在不同的页面或表单中使用相同的逻辑时。

可能遇到的问题及解决方法

问题:找不到元素

原因:可能是由于选择器不正确,或者页面还没有完全加载。

解决方法

  • 确保选择器正确无误。
  • 使用 page.waitForSelector 等待元素出现在 DOM 中。
代码语言:txt
复制
await page.waitForSelector('input[name="username"]');

问题:表单提交后没有响应

原因:可能是由于表单提交后的页面跳转没有被正确处理,或者有弹窗阻止了提交。

解决方法

  • 使用 page.waitForNavigation 等待页面跳转。
  • 如果有弹窗,使用 page.on('dialog', async dialog => { ... }) 处理弹窗。
代码语言:txt
复制
page.on('dialog', async dialog => {
  await dialog.accept();
});

参考链接

以上信息应该能够帮助你理解 Puppeteer 表单提交的相关概念,并解决在按名称选择输入时可能遇到的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在Puppeteer中实现表单自动填写与提交:问卷调查

本文将以 Puppeteer 为工具,结合代理 IP 技术,演示如何实现在线问卷调查的表单自动填写与提交。二、技术分析1....代理 IP 技术:通过使用代理 IP,避免因频繁请求被封禁。自动填写与提交:自动填写问卷表单,并提交数据。3....实现代码以下是 Puppeteer 实现问卷表单自动填写与提交的代码示例:const puppeteer = require('puppeteer');// 16yun代理服务配置const proxyConfig...(3) 自动填写问卷表单使用 page.click 模拟用户点击问卷的单选按钮。使用 page.type 方法在文本框中输入答案。使用 page.click 方法点击提交按钮。...三、结论本文通过 Puppeteer 实现了问卷调查表单的自动填写与提交,并结合代理 IP 技术,展示了一种高效且匿名的表单填写方案。

2400

Puppeteer 入门指引

熟悉爬虫或者 UI 自动化的同学可能会联想到 PhantomJS、CasperJS 或者 Selenium,作为 Chrome DevTools 团队亲自出品和维护的 puppeteer 不管是在功能的完整性...爬取 SPA(Single-Page Application)网站的内容并为 SSR(Server-Side Rendering)网站生成 pre-render 的内容 UI 自动化测试、自动填充/提交表单...、模拟 UI 输入 测试最新的 Javascript 和 Chrome 功能 性能测试,生成 timeline trace 用于定位网站性能问题 测试 Chrome 的插件 当然,puppeteer不是全能的...的一个轻量版本,不会默认下载 Chromium,而是需要选择使用本地或远程的 Chrome。...示例 4 - 自动填充表单提交(在 https://developers.google.com 页面搜索框中输入关键词 Headless Chrome 并搜索) 创建 search.js const

1.6K50
  • 不仅仅可以用来做爬虫,Puppeteer 还可以干这个!

    网上有很多将自动化测试工具作为爬虫的抓取教程,不过仅仅都限于如何获取数据,而我们知道这些基于浏览器的解决方案都有较大的性能开销,而且效率不高,并不是爬虫的最佳选择。...以下是 Puppeteer 可以做的事情: •生成截图和页面 PDF ;•抓取单页应用,产生预渲染内容(即 SSR ,服务端渲染);•自动化表单提交、 UI 测试、键盘输入等等;•创建一个最新的、自动化的测试环境...$(selector) 和 el.type(text) 这两个 API ,分别用于获取元素和输入内容。最后的 elSubmit.click() 是提交表单的操作。...如果用后者的话,可以一次性的将内容输入进来。...相反, Puppeteer 更适合做一些自动化的工作,例如操作浏览器发布文章、发布帖子、提交表单等等。

    2.6K30

    Puppeteer 入门与实战

    利用Puppeteer可以做到爬取页面数据,页面截屏或者生成PDF文件,前端自动化测试(模拟输入/点击/键盘行为)以及捕获站点的时间线,分析网站性能问题。...,是不是就做到将emoji表情保存下来。...1、初探 这是Puppeteer官方提供的一张API分层结构图 从图上我们可以发现,Puppeteer是通过使用Chrome DevTools Protocol(CDP)协议与浏览器进行通信,Browser...":false,"executionContextId":3}} 这种直接操作太不友好,Puppeteer正是实现了遵循CDP的Node顶层API,使我们可以调用简单方便的操作对应的指令。...,经常会碰到表单提交,对于表单中不同字段的校验需要模拟不同的场景,人工的点击效率低,而且每次都需要重复表单输入,比较繁琐。

    2.1K40

    Puppeteer 初探之前端自动化测试

    puppeteer是一个nodejs的库,支持调用Chrome的API来操纵Web,相比较Selenium或是PhantomJs,它最大的特点就是它的操作Dom可以完全在内存中进行模拟既在V8引擎中处理不打开浏览器...puppeteer功能 1.利用网页生成PDF、图片 2.爬取SPA应用,并生成预渲染内容(即“SSR” 服务端渲染) 3.可以从网站抓取内容 4.自动化表单提交、UI测试、键盘输入等 5.帮你创建一个最新的自动化测试环境...,模拟输入需要我们先调用tap方法模拟点击输入框,tap参数就是元素selector,再用type方法进行输入,输入完了之后在模拟点击登录按钮,登录完了之后我们延迟一段时间截图,顺利的话我们就能重新回到之前的售卖页首页...,底下usrbar因为有了登录态也展示了出来。...console.log("登录"); await page.tap("#u"); //直接操作dom选择器,是不是很方便 await page.type("521017853"); await page.tap

    13.1K64

    Headless Testing入坑指南

    因为你可以利用无头测试工具提供的命令行+api来自动化地替代大量的简单重复操作,如输入页面地址、刷新页面、表单提交、确认显示数据是否正确等等。...他提供的API全部都是同步的,不是深度嵌套在回调中的。它最初设计用于在没有对外提供api的站点上自动执行任务,但它最常用的点是UI测试和爬去数据。 Mocha是一个运行在Node和浏览器上的测试框架。...在上面的例子中,我们先跳转到“duckduckgo.com”网站,然后在指定的元素内输入“github nightmare”,接着通过选择器点击指定的按钮,再等到指定的元素出现后,最终确认元素中的链接是否与期待一致...安装Puppeteer的方法 下面的例子中,使用Puppeteer来对页面进行截屏。 下面的例子中,使用Puppeteer来对页面数据进行抓取。...通过无头测试,您可以生成网站的截图和pdf文件,从网站上抓取内容,自动提交表单,并模拟键盘输入。 当与无头浏览器结合使用时,它允许你在完全成熟的浏览器中做任何你可以做的事情,不需要浏览器。

    1.8K50

    用Node.js把HTML转成PDF格式

    如果你没有特殊需求,例如在 PDF 中选择文本或对文本进行搜索,那么这就是一种简单易用的方法。 此方法简单明了:从页面创建屏幕截图,并把它放到 PDF 文件中。非常直截了当。...jsPdf from 'jspdf' 3 4function printPDF () { 5 const domElement = document.getElementById('your-id...但是如果你的目标是直接生成一个 PDF 文件,不是对一个已经存在的(并且不断变化的)HTML 页面进行转换,它还是很有用的。...如果需要先登录才能从受保护的页面生成 PDF,首先你要导航到登录页面,检查表单元素的 ID名称,填写它们,然后提交表单: 1await page.type('#email', process.env.PDF_USER...在选择 CSS 打印规则时,你必须在每个浏览器中测试结果,以确保它提供的布局是相同的,并且它不是100%能做到这一点。

    6.6K30

    Puppeteer-py:Python 中的无头浏览器自动化

    Puppeteer-py 作为一个 Python 库,提供了一种简单强大的方法来控制无头浏览器,实现网页的自动化操作。...什么是 Puppeteer-pyPuppeteer-py 是 Puppeteer 的 Python 端口,Puppeteer 是一个 Node.js 库,用于控制无头 Chrome 或 Chromium...Puppeteer-py 的特性Puppeteer-py 继承了 Puppeteer 的所有特性,并针对 Python 进行了优化。...●自动化表单提交:自动化填写和提交网页表单。●捕获元素信息:获取页面元素的文本、属性等信息。●模拟用户行为:模拟点击、滚动、键盘输入等用户行为。●网络请求拦截:拦截、修改或阻止网络请求。...4.1 初始化浏览器和页面首先,我们需要初始化一个浏览器实例和一个新的页面4.2 导航到京东接下来,我们将导航到京东的主页:4.3 搜索商品假设我们要搜索“Python 书籍”,我们可以模拟用户在搜索框中输入文本并点击搜索按钮的行为

    17310

    无头浏览器自动化:Puppeteer 帮你释放效能 | 开源日报 No.64

    由于组件逻辑是使用JavaScript编写不是模板,因此您可以轻松通过应用程序传递丰富数据并将状态保持在DOM之外。...优势: 提供了大量不同领域、不同难度的实战项目 可以按需选择自己感兴趣或需要掌握的知识点进行学习 适合初学者快速入门并深入理解各项技能 microsoft/terminal[4] Stars: 90.7k...其核心优势有: 支持标签 富文本显示 全球化支持 可自定义配置与主题样式 puppeteer/puppeteer[5] Stars: 83.8k License: Apache-2.0 Puppeteer...以下是 Puppeteer 的主要功能: 生成页面的截图和 PDF。 爬取单页应用程序 (SPA) 并生成预渲染内容 (即服务器端渲染)。 自动化表单提交、UI 测试、键盘输入等操作。...灵活性:开发人员可以根据自己需求选择所需工具和库。 扩展性:有很多由社区提供的扩展可方便地添加新功能。

    32010

    Node+Puppeteer+可视化配置海报业务尝试

    缺点:性能上限不足 因为本身我们海报不仅仅是图片,还会有表格,长图等偏个性化的内容,所以看重个性化扩展和跨端复用能力,对比上述方案最终选择使用puppeteer生成。...在设计可视化中内在核心是:组件编排和表单编排。...*/ id: string; /** 节点名称 */ nodeName: string; /** 组件类型 */ name: ComponentTypes;.../** 组件外层挂载id */ domId: string; /** 组合id */ groupId: string; /** 父id */ parentId:...在可视化系统中,表单主要是通过组件属性生成对应的表单,有些属性我们并不想用户编辑,所以在设计表单时,我们同样使用自定义json schema的方式定义表单并通过插件注册的方式进行注入系统,通过组件名称进行关联组件

    1.4K20

    大前端神器安利之 Puppeteer

    自动表单提交,UI测试,键盘输入等 创建一个最新的自动化测试环境。使用最新的JavaScript和浏览器功能,直接在最新版本的Chrome中运行测试。 捕获您的网站的时间线跟踪,以帮助诊断性能问题。...Toss Puppeteer,这是在 Github 创建的一个仓库,以承载尝试使用 GoogleChrome Puppeteer 做的各种的折腾,具体如下: ---- 微注: 鉴于个人信息不便于提交,...、地址、描述,并“点击”提交,打完收工。...如果愿意折腾的话,还可以提交至多个不同的目标网站,只需增加设定目标地址,登录方式,以及提交表单的信息即可。当然,对于涉及到登录需要复杂的验证网站,额外需要多做些处理。...---- 前面就有提及,使用 Puppeteer,相当于同时具有 Linux 和 Chrome 双端的操作能力,应用场景可谓非常之多;上面这些只是闲余时间写来玩儿的,真正可以做的,会随着你的想象力扩散增加

    2.4K60

    Puppeteer 初探

    木偶 Puppeteer 更友好的 Headless Chrome Node API 木偶也是有心的 (=・ω・=) Puppeteer是什么?...自动表单提交,UI测试,键盘输入等。 创建一个最新的自动化测试环境。使用最新的的JavaScript和浏览器功能,直接在最新版本的Chrome浏览器中运行测试。...入门 安装Puppeteer npm install puppeteer 或者 yarn add puppeteer Puppeteer至少需要Node v6.4.0,但如果想要使用async / await...}); console.log('Dimensions:', dimensions); // await browser.close(); } 进阶 page.type 获取输入框焦点并输入文字...page.keyboard.press 模拟键盘下某个按键,目前mac上组合键无效为已知bug page.waitFor 页面等待,可以是时间、某个元素、某个函数 page.frames() 获取当前页面所有的

    2.7K20

    使用浏览器自动化框架开发了一款多平台自动发布工具——万媒易发

    背景自媒体从业者常常需要在多个社交媒体平台上发布内容,这一过程往往繁琐耗时。为了提高效率,我决定开发一款工具,能够自动化地在不同平台上发布内容,减轻创作者的负担。...技术选择Puppeteer和node.jsPuppeteer是一款由Google维护的浏览器自动化框架,node.js则是一种基于Chrome V8引擎的JavaScript运行环境。...模拟用户操作通过Puppeteer,我可以模拟用户在浏览器中的各种操作,比如点击按钮、输入表单等。...simulateUserAction() { await page.goto('https://example.com'); // 模拟点击按钮 await page.click('#my-button'); // 模拟输入表单...;通过这些步骤,我已经完成了一款基于Puppeteer和node.js的自动发布工具。万媒易发的应用为何选择万媒易发?

    49220

    如何写微信小程序的自动化脚本?

    有一个专有的名称叫RPA,RPA是Robotic Process Automation的简写,译作中文是机器人流程自动化。...它们能够登录应用程序、移动文件和文件夹、复制和粘贴数据、填写表单、从文档中提取结构化和半结构化数据、抓取浏览器等。 ? RPA的实现原理是什么? 那么,RPA是如何实现的呢?...Easy Macro Recorder Easy Macro Recorder 是一个国外类似按键精灵的鼠标键盘自动操作软件,它实现了让键盘与鼠标自动点击与自动输入,可以自动执行电脑上重复繁琐的任务。.../puppeteer 总结 好了,最后总结一下,由于RPA是在PC时代发展起来的,所以目前在移动端的支持也不是很完善。...2021年02月07日 《小程序从0到1:微信全栈工程师一本通》 一本全面系统的介绍小程序开发技术的书籍 ?

    11.4K23

    干货 | 基于 BDD 理念的 UI 自动化测试在携程度假的应用

    2)用户在输入框内输入 BDD-UI-Testing ? 3)用户下回车 4)TODO List 显示 BDD-UI-Testing,并且输入框被清空。 ? 那我们的 BDD 测试该如何去实现呢?...Given 浏览器导航到"trip.com" Then 在目的地输入框内输入"上海" Then 点击"搜索" And 验证搜索列表页内包含"上海" 关于 Puppeteer...增加 test-id,保证选择器的可靠性 由于普通的 Class 选择器等并不靠谱,我们需要开发在写代码时加入稳定的 data-test-id 自定义属性作为我们自动化测试埋点,有了这些我们的自动化用例就不会因为...DOM 结构的频繁修改导致选择不到相关元素。...修改为:使用 test-id 作为选择器后,我们也大大增加了可维护性,并把这些作为自动化测试用例“资产”的一部分。 ?

    2.6K21

    自动化 Web 性能分析之 Puppeteer 爬虫实践

    Puppeteer 用途 生成页面的屏幕截图和 PDF。 爬取 SPA 应用,并生成预渲染内容(即 SSR 服务端渲染)。 自动执行表单提交、UI测试、键盘输入等。...双探 Puppeteer:爬取苏宁易购的商品信息 打开电商首页,输入想要的商品名称,点击搜索按钮,跳转至相应的商品列表页,然后一页页浏览,从而找到心仪的商品,这大概就是我们平时网购的样子。...[, options]) 点击要选择的元素 page.waitForNavigation([options]) 等待页面跳转 page.waitFor(selectorOrFunctionOrTimeout...Array.from($(sel).find('li div.res-info')); const item = shopBoxs.map(v => { // 获取每个商品的名称.../ 2); const y = box.y + (box.height / 2); // 鼠标滑动至滑动按钮中心点 await page.mouse.move(x, y); // 下鼠标

    3.5K40
    领券