Puppeteer 木偶演员:page.type()遗漏了字符串的前几个字符

Puppeteer 木偶演员:page.type()遗漏了字符串的前几个字符,puppeteer,Puppeteer,我面临木偶演员的page.type()方法的问题。有时它可以完美地键入整个字符串,但有时它只是漏掉了前几个字符 假设我有一个字符串:我可能还没到那里,但我比昨天更近了。它只是键入y还没有到那里,但我比昨天更近了 我在github中找到了一个与此相关的,但它已关闭。虽然我已经尝试了那里建议的一些解决方案,但似乎不起作用。我也要求重新讨论这个问题,但我想这需要一些时间 因此,我想从中寻求解决方案。代码如下: const blog = { postContent: [ {

我面临木偶演员的
page.type()
方法的问题。有时它可以完美地键入整个字符串,但有时它只是漏掉了前几个字符

假设我有一个字符串:
我可能还没到那里,但我比昨天更近了
。它只是键入
y还没有到那里,但我比昨天更近了

我在github中找到了一个与此相关的,但它已关闭。虽然我已经尝试了那里建议的一些解决方案,但似乎不起作用。我也要求重新讨论这个问题,但我想这需要一些时间

因此,我想从中寻求解决方案。代码如下:

const blog = {
     postContent: [
          {
               text: "SSBtYXkgbm90IGJlIHRoZXJlIHlldCwgYnV0IEknbSBjbG9zZXIgdGhhbiB5ZXN0ZXJkYXk=",
               status: "pending"
          },
          {
               text: "RG9uJ3QgcXVpdGUuIFN1ZmZlciBub3cgYW5kIGxpdmUgdGhlIHJlc3Qgb2YgeW91ciBsaWZlIGFzIGEgY2hhbXBpb24u",
               status: "pending"
          },
          {
               text: "TGlmZSBpcyBub3QgYWJvdXQgd2lubmluZy4gSXQncyBhYm91dCBub3QgZ2l2aW5nIHVwIQ==",
               status: "pending"
          }
     ]
};


await page.waitForSelector('div[role="presentation"]' );
await page.focus('div[role="presentation"]');

// finding the index of the blog post which is pending
const pendingPostIndex = await blog.postContent.findIndex( item => item.status === "pending" );

// decoding post content
const textContent = `${Buffer.from(blog.postContent[pendingPostIndex].text, 'base64').toString()}`;

// this gets the full text without missing characters
console.log('text content of pending post: ', textContent);

// first couple characters are missing most of the time
await page.type('div[role="presentation"] span', textContent, {
         delay: 100
});

我不知道这里会出什么问题。是因为解码需要一点时间,而page.type()会在文本完全解码之前触发吗?还是说找到post索引需要时间?我如何解决这个问题?

您在问题页面上提到的一个建议,对我来说也很有效,那就是在键入之前确保输入已归零:

await page.click('div[role="presentation"] span', {clickCount: 3});
await page.keyboard.press('Backspace');

不确定是否相关,但想知道为什么要在span中键入。它是
div[role=presentation]span
。但为了简化,我将其更改为
input[type=text]span
。我会把它改回原来的样子。这是Facebook的输入字段。没有输入元素。非常感谢,伙计。我首先尝试了上面的代码。但对我来说不起作用。然后我删除了“span”并添加了
delay:100
。现在它似乎正在工作,但我不确定它是否完全修复了,或者这个问题会再次出现,因为它过去是随机发生的。如果问题再次出现,我将在此更新。