puppeteer/testhlk.spec.js
LingandRX e521f3b028 test
2024-12-19 00:05:29 +08:00

104 lines
2.7 KiB
JavaScript

import puppeteer, { launch, Locator } from 'puppeteer'; // v23.0.0 or later
import fs from 'fs';
import { resolve } from 'path';
(async () => {
const browser = await launch({
headless: false,
});
const page = await browser.newPage();
const timeout = 5000;
page.setDefaultTimeout(timeout);
{
const targetPage = page;
await targetPage.goto('https://hlk.meiguanjia.net/#/login');
}
{
const targetPage = page;
await Locator.race([targetPage.locator('input[placeholder="请输入您的手机号码')])
.setTimeout(timeout)
.click();
}
{
const targetPage = page;
await Locator.race([targetPage.locator('input[placeholder="请输入您的手机号码')])
.setTimeout(timeout)
.fill('17770720274');
}
{
const targetPage = page;
await Locator.race([targetPage.locator('input[placeholder="请输入登录密码')])
.setTimeout(timeout)
.click();
}
{
const targetPage = page;
await Locator.race([targetPage.locator('input[placeholder="请输入登录密码')])
.setTimeout(timeout)
.fill('a123456');
}
{
const targetPage = page;
await Locator.race([targetPage.locator('#agreement')])
.setTimeout(timeout)
.click();
}
{
const targetPage = page;
await Locator.race([targetPage.locator('.login-form-button')])
.setTimeout(timeout)
.click();
await new Promise((resolve) => setTimeout(resolve, 3000));
}
{
const targetPage = page;
targetPage.on('console', (msg) => {
for (let i = 0; i < msg.args().length; ++i) {
console.log(`${msg.args()[i]}`);
}
});
// 获取浏览器中的 IndexedDB 数据
const result = await page.evaluate(async () => {
return new Promise((resolve, reject) => {
const request = indexedDB.open('hlk_touch_test_14920');
request.onsuccess = (event) => {
const db = event.target.result;
const transaction = db.transaction(db.objectStoreNames, 'readonly');
const objectStore = transaction.objectStore(db.objectStoreNames[0]);
// resolve('success');
const cursorRequest = objectStore.openCursor();
cursorRequest.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
console.log(cursor.key);
const value = cursor.value;
console.log(JSON.stringify(value));
cursor.continue();
} else {
resolve('success');
}
};
};
request.onerror = (event) => {
reject(event.target.error);
};
});
});
console.log(result);
}
// await browser.close();
})().catch((err) => {
console.error(err);
process.exit(1);
});