javascript - 如何使用 puppeteer 从 json 文件中获取数据到 js
问题描述
如何从 json 文件中获取用户名和密码等数据?
const { errors } = require('puppeteer');
const puppeteer = require('puppeteer-extra');
(async () => {
const browser = await puppeteer.launch({
headless: false,
ignoreHTTPSErrors: true,
webpage: true,
slowMo: 3,
executablePath: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
});
const page = await browser.newPage();
await installMouseHelper(page); // Makes mouse visible
await page.setDefaultNavigationTimeout(0);
await page.evaluate(() => { debugger; });
await page.goto('https://nike.com/my/login');
await page.waitFor(500);
const login = '[data-componentname="emailAddress"]';
loginButton = await page.waitForSelector(login),
await loginButton.click(),
await loginButton.type("test@gmail.com");
await page.waitFor(500);
const loginPsw = '[data-componentname="password"]';
loginPswButton = await page.waitForSelector(loginPsw),
await loginPswButton.click(),
await loginPswButton.type("Qwert12345.");
await page.waitFor(500);
const signInBtn = '[class="nike-unite-submit-button loginSubmit nike-unite-component"]';
signInBtnButton = await page.waitForSelector(signInBtn),
await signInBtnButton.click();
})();
{
"nikeSNKRS": {
"accounts": [
{
"note": "",
"accounts": [
{
"user": "test@gmail.com",
"password": "Qwert12345.",
"access_token": "",
"refresh_token": "",
"expires_in": "",
"token_type": "",
"country": "",
"phone": "",
"expires": "???",
"proxy": ""
}
]
}
]
}
}
解决方案
如果您不想通过回调嵌套来搞乱现有代码,请创建一个async
方法来读取包含您的数据的文件:
const fs = require("fs");
const getData = (file) => {
return new Promise((resolve, reject) => {
fs.readFile(file, (err, data) => {
if (err) return reject(err);
try {
const json = JSON.parse(data);
resolve(json);
} catch (E) {
reject(E);
}
}
}
}
然后,如果您的数据位于 中./data.json
,请在适当的位置添加/修改您的代码:
const json = await getData("./data.json");
//...
const user = json.nikeSNKRS.accounts[0].accounts[0].user;
await loginButton.type(user);
// ...
const password = json.nikeSNKRS.accounts[0].accounts[0].password
await loginPswButton.type(password);
推荐阅读
- android - 在 Android 上的 Unity 2018.1 中使用 ICE .netcore 2.0 时出现空异常
- excel - VBA Excel 从倒数计时器捕获数据
- amazon-web-services - 需要帮助对使用 PingFederate 作为 AWS Cognito 的 SAML IDP 提供商的测试设置进行故障排除
- python - 如何将方程从 txt 文件插入 python 脚本并生成另一个文件?
- ruby-on-rails - 用于 date_field 的 Rails if 语句
- php - Builder.php 行 2405 中的 BadMethodCallException
- php - 使用自定义 PDO 函数时,绑定变量的数量与标记的数量不匹配
- vhdl - VHDL 3位7段显示
- php - 不在 twig 中转义 HTML 标签,因此它们显示为标记
- node.js - 猫鼬。在 post hook 中获取文档值