如何使用 Puppeteer 暂停并等待用户输入?

2023-12-28

我需要做Puppeteer暂停并等待用户输入username and password在继续之前。它是一个nodejs8.12.0 应用程序。

(async () => {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();   
    await page.goto('https://www.myweb.com/login/');

    //code to wait for user to enter username and password, and click `login`

    const first_page = await page.content();

   //do something 

    await browser.close();
)}();

基本上程序会停止并等待,直到用户单击login按钮。是否可以这样做Puppeteer?或者我还能做什么?


您可以使用page.waitForFunction() https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagewaitforfunctionpagefunction-options-args在继续之前等待函数返回真值。

以下函数将等待#username and #password在继续之前,字段包含一个值:

await page.waitForFunction(() => {
  const username = document.getElementById('username').value;
  const password = document.getElementById('password').value;
  
  return username.length !== 0 && password.length !== 0;
});

但既然你进入了#username and #password你自己,你可以简单地使用:

await page.type('#username', 'username');
await page.type('#password', 'password');
await page.click('#login');
await page.waitForNavigation();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Puppeteer 暂停并等待用户输入? 的相关文章

  • 动态添加jinja模板

    我有一个 jinja 模板 它是一组 div 标签内的唯一内容 div include temppage html div 当我按下按钮时 我想用其他内容替换标签之间的所有内容 我希望用另一个 jinja 模板 include realpa
  • Google javascript 登录 api:无法离线访问

    我正在尝试为服务器端应用程序实现 Google 登录 如 Google 文档中所示 服务器端应用程序的 Google 登录 https developers google com identity sign in web server si
  • ELEMENT.style.color 在 IE 中不起作用

    在一个小型 Web 应用程序中 我使用 JavaScript 在文本框中设置一些文本及其颜色 在下面的片段中 el 是我的对象 这段代码在 Firefox Opera 和 Safari 下产生了正确的效果 但在 IE 下却没有这样的运气 我
  • 如何在 JavaScript 中检查未定义的变量

    我想检查变量是否已定义 例如 以下内容会引发未定义的错误 alert x 我怎样才能捕获这个错误 在 JavaScript 中 null是一个对象 不存在的事物还有另一种价值 undefined DOM 返回null对于几乎所有无法在文档中
  • 确定用户是否在shadow dom之外单击

    我正在尝试实现一个下拉菜单 您可以单击外部将其关闭 下拉列表是自定义日期输入的一部分 并且封装在输入的影子 DOM 内 我想写一些类似的东西 window addEventListener mousedown function evt if
  • Express.js - 监听关闭

    我有一个使用 Express 的 Node js 应用程序 在该应用程序中 我有一个如下所示的块 const app require app const port process env PORT 8080 const server app
  • 角度引导手风琴数据绑定问题

    我有 2 个相同型号的下拉菜单 一个位于手风琴内部 另一个位于外部 外部下拉菜单在 2 路数据绑定方面工作良好 但手风琴内部的下拉菜单似乎只有 1 路绑定 换句话说 在 UI 中选择并不会设置模型值 我找到了一个建议here https s
  • 如何将多个文件上传到Firebase?

    有没有办法将多个文件上传到 Firebase 存储 它可以在一次尝试内上传单个文件 如下所示 fileButton addEventListener change function e Get file var file e target
  • 如何使用 Selenium webdriver 测试对 SVG 对象的点击?

    我正在尝试编写代码来检查单击 SVG 对象的功能 例如此 URL 上的美国州 http www amcharts com svg maps map usa 这可行 但是有更好的方法吗 不需要物理移动鼠标的东西 robert new Robo
  • 有效地获取下拉列表中的选定选项(XHTML Select 元素)

    背景 使用 XHTML Select 元素的下拉列表中有大量选项 数十个 我需要使用 JavaScript 检索所选选项 Problem 目前我正在使用 jQuery selectedCSS 选择器并且它按预期工作 但这种方法效率不高 因为
  • 如何比较两个对象数组并更改两个数组中找到的对象的值?

    假设我有两个对象数组 let array1 id 1 name snow id 4 name jo id 8 name bran id 12 name gondo id 13 name peter
  • ExpressJS - 提供通用 Nuxt 应用程序和 AngularJS SPA

    我有一个具有以下结构的博客项目 服务器 用 Node Express 编写 管理员 AngularJS SPA public AngularJS SPA 目前 管理部分和公共部分具有相同的域 但管理部分使用不同的子域 这允许我在 Expre
  • 单击文件下载后,成功后使用 AJAX 重定向到另一个页面

    In my WordPress project my Download button containing a zip file which onClick should be downloaded So the HTML producin
  • 字符串化 JavaScript 对象

    我正在寻找字符串化一个对象 我想要这样的输出 1 valeur dalebrun usager experttasp date 2013 08 20 16 41 50 2 valeur test usager experttasp date
  • jqPlot DateAxis tickInterval 不起作用

    我试图每月绘制一个包含单个数据点的图表 我会在每个月的第一天将其作为一个点发送到 jqPlot jqplot actualChart 2011 10 01 0 296 2011 11 01 0 682 title programSelect
  • 已安装全局 NPM 包但未找到命令

    我已经全局安装了两个 npm 包 下载 https www npmjs com package download and 谜虚拟盒 https www npmjs com package enigmavirtualbox通过命令行 npm
  • 通过ajax POST提交两次表单

    插入到mysql using php通过文件调用AJAX 前insert语句php代码执行select查询到查找重复记录并继续insert statement Issue 从ajax调用php文件时 它执行了两次并得到作为重复记录的响应 好
  • 关于 Node.js Promise then 和 return?

    我对承诺感到困惑 I use 那么就答应没有返回像这样 new Promise resolve reject gt resolve 1 then v1 gt console log v1 new Promise resolve reject
  • 如何设置 .eslintrc 来识别“require”?

    我是新来的ESLint http eslint org 并且我已经成功地将 ESLint 与IntelliJ https www jetbrains com idea 开箱即用 我的 ESLint 集成无法识别node 但对文档的基本审查表
  • 限制在三角形内

    我正在寻找一段通用代码 javascript 它可以与 jquery UI 一起使用来限制三角形内 div 的移动 拖动 与此类似 http stackoverflow com questions 8515900 how to constr

随机推荐

  • 如何编写一个在旧版 Python 中正常失败的 Python 2.6+ 脚本?

    我正在使用 Python 3 x 中的新打印 并且我观察到以下代码没有compile因为end from future import print function import sys if sys hexversion lt 0x0206
  • Access-Control-Allow-Origin 标头不起作用

    即使我已将其添加到我的 htaccess 文件中 Header add Access Control Allow Origin 这在我的 apache 配置中 在部分内部和外部
  • 如何在 Django 中将 get_context_data 与 TemplateView 一起使用[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试做这样的事情 class
  • Android Studio 模块依赖于另一个模块的测试

    我正在尝试让 Gradle Java 插件执行 Android 项目中存在的 jUnit 测试 我的解决方案是创建第二个应用 Java 插件的模块 并将测试源集设置为应用程序模块的 src test 目录 测试模块的build gradle
  • Haskell:I/O 和从函数返回

    请耐心等待 因为我对函数式编程和 Haskell 非常陌生 我试图在 Haskell 中编写一个函数 它接受一个整数列表 打印所述列表的头部 然后返回列表的尾部 该函数的类型必须是 Integer gt Integer 为了提供一些上下文
  • 错误:禁止 您的客户端无权从此服务器获取 URL /api/app

    我在访问 Firebase 帐户内的 JSON api 时遇到问题 我将在终端中输入 firebase deploy 它将返回以下 url https myProjectID firebaseapp com https myProjectI
  • C++:Hbitmap/BITMAP 到 .bmp 文件中[重复]

    这个问题在这里已经有答案了 好吧 整个故事是 我试图在 C 中使用 Leptonica Tesseract OCR 来截取屏幕截图 将其保存到 bmp 文件 然后将其加载回 OCR 我不需要经常这样做 但由于我似乎无法将屏幕截图数据直接复制
  • Android 自定义控件中的数据绑定

    在官方 android 文档中 有一些如何在片段和活动中使用数据绑定的指导 然而我有相当复杂的选择器和大量的设置 就像是 class ComplexCustomPicker extends RelativeLayout PickerView
  • 奇怪的边框颜色问题

    我正在创建一个用户顶部列表 其中使用 CSS3 边框为排名数字创建白色边框 可以在这里查看 http www cphrecmedia dk musikdk stage channelfans php http www cphrecmedia
  • Python 在类之间传递变量

    我正在尝试为游戏创建角色生成向导 在一堂课中 我计算了角色的属性 在不同的班级中 我根据角色的属性向用户显示哪些专业可用 但是 我不记得如何在不同类之间传递变量 这是我所拥有的示例 class BasicInfoPage wx wizard
  • 如何在Silex中实现断点续传

    In silex http silex sensiolabs org doc usage html sending a file我可以这样做来强制下载文件 use Symfony Component HttpFoundation Reque
  • 将对象转换为单元素列表的快速方法?

    什么是最快的C 2 0从单个对象创建一个单元素列表 eg MyObject obj new MyObject List
  • 如何捕获Flex中的所有异常?

    当我在调试 Flash 播放器中运行 Flex 应用程序时 一旦发生意外情况 就会弹出异常 然而 当客户使用该应用程序时 他不会使用调试闪存播放器 在这种情况下 他不会弹出异常 但他的 UI 无法正常工作 因此 出于可支持性的原因 我希望捕
  • 如何触发点击按钮

    I ve 我需要使用 AngularJS 触发单击此页面上的 立即购买 按钮 我已经尝试过以下方法来单击内容脚本 myscript js 中的 立即购买 但不起作用 angular element ul form button contai
  • 是否有文档将 matplotlib 的有状态 pyplot API 映射到面向对象的等效项?

    我更喜欢使用 Matplotlib 的面向对象 API 直接对图形和轴进行操作 而不是使用matplotlib pyplot命令 然而 我经常发现通过以下方式更容易找到有关如何做某事的文档pyplot界面 在这些情况下 找出相关的内容将非常
  • 无法从 bash 脚本获取 ~/.bashrc

    在我的脚本中 我尝试获取两个文件来获取变量 但它无法获取定义的变量 bashrc OS Ubuntu Desktop 20 04 2 LTS cat debug sh usr bin env bash cat gt env sh lt lt
  • 显示调整大小后的图像

    我正在尝试使用以下功能调整大小和图像 function resize image file w h crop FALSE list width height getimagesize file r width height if crop
  • auto.register.schemas 设置为 false 无法按预期工作

    auto register schemas false 没有像我预期的那样工作 如果我阅读文档 它应该阻止生产者注册新模式 https docs confluence io platform current schema registry
  • 无法在 Java 中使用 Batik 编辑 SVG?

    我有一张学生卡 SVG 其中包含我想通过 Java 编辑的姓名 id 和其他字段 当用户使用 GUI 输入它们时 我已使用 Batik 成功解析了 SVG 但打开 SVG 文件时看不到在 SVG 文件中所做的更改 String parser
  • 如何使用 Puppeteer 暂停并等待用户输入?

    我需要做Puppeteer暂停并等待用户输入username and password在继续之前 它是一个nodejs8 12 0 应用程序 async gt const browser await puppeteer launch hea