我试图在一个包含当前记录标题的可编辑输入中测试修改文本,我希望能够测试编辑这样的文本,用其他内容替换它.

我知道我可以使用await page.type('#inputID', 'blah');将"blah"插入文本框(在我的情况下,文本框中有现有文本,只附加"blah"),但是,我找不到任何允许删除或替换现有文本的页面方法1.

推荐答案

您可以使用page.evaluate来操作DOM:

await page.evaluate( () => document.getElementById("inputID").value = "")

然而,有时仅仅操作一个给定的字段可能不够(目标页面可能是一个带有事件侦听器的SPA),所以模拟真实的按键是更好的 Select .下面的例子来自Puppeter's Github中关于这个任务的the informative issue个例子.

在这里,我们按Backspace次该字段中的字符:

const inputValue = await page.$eval('#inputID', el => el.value);
for (let i = 0; i < inputValue.length; i++) {
  await page.keyboard.press('Backspace');
}

另一个有趣的解决方案是单击目标字段三次,这样浏览器就会 Select 其中的所有文本,然后你就可以键入你想要的内容:

const input = await page.$('#inputID');
await input.click({ clickCount: 3 })
await input.type("Blah");

Node.js相关问答推荐

node 无法验证第一个证书

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

在 Nest 项目上运行 Jest 测试时,我的文件无法找到一个在测试之外没有任何问题的模块

$not 的聚合版本是什么?

如何获取文件的中间值?

mongoose 7.0.3 使用运算符 $and 严格搜索日期

结合后端(Express)和前端(Angular)路由

在 Node JS 中使用 url 链接而不是文件路径

MongoDB Aggregate - 如何使用前一阶段的值作为下一阶段的字段名称?

Electron 模板(Typescript + Webpack)中的这个 Electron Forge ERROR 是什么?

如何在没有云功能的情况下使用 Google PubSub

如何使用 Jest 模拟异步函数的延迟时间

JavaScript & Node - 将图像文件保存到服务器但无法查看

部署云功能 Firebase/Stripe 时出错

Firestore promise 在退货前等待产品详细信息

如何限制 cron 表单将消息推送到 RabbitMQ?

如何在 Nest.js 中使用查询参数?

webpack css-loader 在外部样式表的 url() 引用中找不到图像

如何在离线时安装 npm 包?

将 Heroku App 连接到 Atlas MongoDB 云服务