javascript - 在 puppeteer 中使用提示符
问题描述
我正在尝试获取用户名和密码字段的用户输入,并使用 puppeteer 使用它来填充网页中的字段。我的两个提示没有正确存储,因为当我在 page.keyboard.type(username) 中调用它们时,它无法填充字段(我相信它是因为输入不是字符串,而所需的这个参数是字符串)
const puppeteer = require('puppeteer');
const prompt = require('prompt');
prompt.start();
(async() => {
var result = await new Promise(function (resolve, reject) {
prompt.get('username', function (err, result) {
resolve(result);
});
});
var result2 = await new Promise(function (resolve, reject) {
prompt.get('password', function (err, result2) {
resolve(result2);
});
});
const browser = await puppeteer.launch({
headless: false
});
const username = String(result);
const password = String(result2);
const page = await browser.newPage();
await page.goto('');
const BUTTON_SELECTOR1 = '#post-3782 > div > div > p.clear > span > a > img';
await page.click(BUTTON_SELECTOR1);
const USERNAME_SELECTOR = '#username';
const PASSWORD_SELECTOR = '#password';
const BUTTON_SELECTOR = '#col2 > form > div:nth-child(3) > button';
await page.click(USERNAME_SELECTOR);
await page.keyboard.type(username);
await page.click(PASSWORD_SELECTOR);
await page.keyboard.type(password);
await page.click(BUTTON_SELECTOR);
await page.waitForNavigation();
await page.goto('');
/*
await page.close();
await browser.close();
*/
})();
解决方案
该函数prompt.get()
返回一个对象(即{ username: 'johndoe' }
)。
因此,以下示例显示了使用提示包获取 Puppeteer 用户名和密码的最佳方法:
const credentials = await new Promise((resolve, reject) => {
prompt.get(['username', 'password'], (error, result) => {
resolve(result);
});
});
const username = credentials.username;
const password = credentials.password;
await page.type('#username', username);
await page.type('#password', password);
推荐阅读
- excel - 如何在 VBa 中使用 Vlookup?
- macos - 我应该担心没有代码签名的python 3.6吗?
- keras - Keras 序列到序列模型中的异常
- python-3.x - plotly:3D 绘图返回一个没有数据点的图形
- c# - 从 SQL 获取数据以及在 C# 中读取 excel
- mysql - 将 WHERE 和 AND 分组为一个语句
- python - 使用 SciPy 拟合 Levy 稳定分布
- javascript - 如何获取复选框索引/行号?
- javascript - 如何在 javascript 文件中绘制图表并将其传递给 html 以便它可以显示
- php - 尝试使用军用时钟格式制作 if、elseif、else 时间和何时吃饭的声明