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

我知道我可以使用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相关问答推荐

链接Inbox类方法,范围在哪里以及为什么发生变化?

赫斯基添加命令已弃用?

express返回意外的URL

如何在Node.js 中设置图表js的背景色

MongoDB-$Lookup未获得适当的结果

获取驱动器文件夹的直接子文件夹时出现问题

EJS ForEach循环标记

yarn 安装失败,因为 node-gyp 正在寻找过时的 node 版本标头

如何调用同名的两个函数?

响应发送 200 而不是 403

Node_redis - 如何删除密钥?

如何从 Redis 保存和检索会话

Node.js 支持 =>(箭头函数)

MongoDB Node findone如何处理没有结果?

如何仅在丢失的路由上将 Express.js 设置为 404?

在 Node.js 上使用 Connect 无法获取 /

mongoose 填充与对象嵌套

如何阻止 babel 将this转换为undefined(并插入use strict)

避免在弹性 beantalk 中重建 node_modules

如何在 express/node js 中发送错误 http 响应?