如何从 Puppeteer 将文本输入到 Flash TextArea 中?

Posted

技术标签:

【中文标题】如何从 Puppeteer 将文本输入到 Flash TextArea 中?【英文标题】:How do you enter text into a Flash TextArea from Puppeteer? 【发布时间】:2020-08-02 06:55:24 【问题描述】:

我正在尝试通过 Puppeteer 自动登录 Flash 对象。我只需单击即可自动聚焦在 Flash TextArea 上,这似乎有效(显示您正在输入的垂直闪烁条出现)。但是,我尝试使用page.keyboard.presspage.keyboard.up/page.keyboard.downpage.keyboard.type,都没有成功在用户名或密码字段中输入文本。此外,我已将一段注入的 javascript 设置为 console.log Flash 对象上每个 keypress 事件的键名,并且它仅在我专注于 Flash 对象时手动键入时触发。在我尝试使用 Puppeteer 键盘输入时,它没有记录任何内容。我的代码如下:

const login = async (page) => 
  await page.waitFor(20);
  const username = process.env.SIGNIN_USERNAME;
  await page.click(500,500); // Select the username field
  await page.waitFor(20); // Allow the blinking bar to appear
  await page.keyboard.type(username);
  for(let char of username) 
    await page.keyboard.press(char);
    await page.waitFor(20); // So that it appears like a user is typing
  
  for(let char of username)
    await page.keyboard.down(char);
    await page.waitFor(10);
    await page.keyboard.up(char);
    await page.waitFor(20);
  
  await page.type("object",username); // The Flash object is the first object on the page
  console.log(username) // The username is logged to the console and is defined
;

此代码不会导致任何文本出现在 Flash TextArea 中。但是,正确的用户名会记录到控制台。

我是不是犯了一个错误,或者在 Puppeteer 甚至只是在浏览器 Javascript 中是否有一些通用方法可以将文本输入到我缺少的 Flash TextArea 中?谢谢。

【问题讨论】:

【参考方案1】:

尝试使用更底层的函数,例如 keyboard.sendCharacter,它无法处理 keyboard.press 的所有奇怪事件处理。

【讨论】:

以上是关于如何从 Puppeteer 将文本输入到 Flash TextArea 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将屏幕截图从 puppeteer 上传到 cloudinary 或 google bucket?

已在Puppeteer中定义函数后如何调用该函数

如何使用 Puppeteer 填充输入字段?

是否可以直接向 Puppeteer 获取 Puppeteer 音频馈送和/或输入音频?

从 Puppeteer 中的 page.evaluate 获取元素?

如何在 Puppeteer 中点击文本?