puppeteer - 如何在 puppeteer 中删除添加到表单中的项目
问题描述
我对 puppeteer 有疑问。我想删除表单中添加的项目。例如,我有一个表单并添加了一些假数据(“example”)。我想删除这个“示例”,它位于什么位置都没有关系。我只想删除这个“例子”。
所以,这意味着,puppeteer 添加它并将在下一步中删除。
我努力了:
// fake data
const metadatatest = {
text: 'example,
}
describe('Should be navigate through details', () => {
it('can navigate through detail', async () => {
// this adds fake data successfully
await page.waitForSelector('[data-testid="appCard"]')
await page.click('[data-testid="appCardDetails"]')
await page.waitForSelector('[data-testid="overviewSectionMetadataForm"]')
await page.click('[data-testid="overviewSectionMetadataEditButton"]')
//await page.$eval('[data-testid="metadataInput"]', el => el.value = 'example')
await page.type('[data-testid="metadataInput"]', metadatatest.text)
await page.waitForSelector('[data-testid="metadataInput"]')
await Promise.all([
page.click('[data-testid="overviewSectionMetadataEditButton"]'),
]);
// I want to delete this
})
})
我也尝试过使用
await page.keyboard.press('Backspace')
await page.keyboard.press('Clear')
await page.keyboard.press('Delete')
但没有运气。
请有任何帮助!
解决方案
所以你要问的是关于从输入字段中清除文本,我读对了吗?Puppeteer 没有内置的方法,但我找到了一种解决方法,可以为你做这件事。
首先,您需要在要清除的输入字段上单击 3 次。这充当对该元素中输入的所有文本的 全选操作:
await page.click(selector, { clickCount: 3 });
现在您可以使用之前的尝试清除文本:
await page.keyboard.press('Backspace');
更新 1:
您用于清除然后在输入字段中输入所需文本的最终代码应如下所示:
await page.click('[data-testid="metadataInput"]', { clickCount: 3 });
await page.keyboard.press('Backspace');
await page.type('[data-testid="metadataInput"]', metadatatest.text);
推荐阅读
- c - 如何将 mvprintw 与指向字符串的指针数组一起使用
- javafx - javafx 8在textarea中编辑文本
- raspbian - 如何将 CD 音轨输入 ALSA 驱动的声音输出设备?
- git - 带有 MAC 的 Parallels 中的 Visual Studio 不断重新加载项目
- java - 对象被覆盖
- javascript - Marionette CollectionViews 有 templateContext 吗?
- excel - 为什么条件格式匹配在工作表中不起作用?
- c++ - 如何在不解码每个键事件的情况下从嵌入式 linux 中的键盘获取文本?
- angular - Ionic v5/Angular 8:HttpClient.get().subscribe() 返回 TypeError:无法读取未定义的属性“句柄”
- php - PHP preg_replace 模式不以“.zip”或“.pdf”或“.txt”结尾