我试图在一个包含当前记录标题的可编辑输入中测试修改文本,我希望能够测试编辑这样的文本,用其他内容替换它.
我知道我可以使用await page.type('#inputID', 'blah');
将"blah"插入文本框(在我的情况下,文本框中有现有文本,只附加"blah"),但是,我找不到任何允许删除或替换现有文本的页面方法1.
我试图在一个包含当前记录标题的可编辑输入中测试修改文本,我希望能够测试编辑这样的文本,用其他内容替换它.
我知道我可以使用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");