Багато хто знає Playwright як інструмент для тестувальників. Але його справжня сила — у здатності імітувати дії людини в браузері, що відкриває безмежні можливості для автоматизації. Забудьте про нудне заповнення форм, завантаження файлів чи збір даних — усе це може робити за вас скрипт.
У цій статті ми напишемо простого, але ефективного бота на Playwright, який буде:
1. Відкривати браузер.
2. Заходити на сторінку реєстрації.
3. Генерувати унікальні дані для нового акаунта.
4. Заповнювати форму та завантажувати аватарку.
5. Зберігати логін та пароль у файл.
6. Робити це паралельно у кількох вікнах для максимальної швидкості.
Крок 1: Налаштування проєкту
На відміну від тестування, для простої автоматизації нам не потрібен тест-ранер. Ми встановимо Playwright як звичайну бібліотеку.
1. Створіть нову папку для проєкту та відкрийте її в терміналі.
2. Ініціалізуйте `package.json`:
bashnpm init -y3. Встановіть Playwright:
bashnpm install playwrightЦього достатньо, щоб почати.
Крок 2: План та написання скрипта
Створимо файл `bot.js` і почнемо писати логіку. Наш бот буде виконувати дії послідовно, як це робила б людина.
Важливо: Оскільки у нас немає реального сайту для прикладу, ми будемо використовувати уявні URL та селектори. Вам потрібно буде замінити їх на реальні селектори з сайту, який ви автоматизуєте.
Ось повний код скрипта:
javascriptconst { chromium } = require('playwright');
const fs = require('fs');
async function createAccount() {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
try {
console.log('Переходимо на сторінку реєстрації...');
await page.goto('https://example-registration-site.com/register');
const username = `user_${Date.now()}`;
const email = `${username}@example.com`;
const password = `P@ssword${Math.floor(Math.random() * 1000)}`;
const avatarPath = 'avatar.png';
console.log(`Генеруємо акаунт: ${username} / ${password}`);
await page.locator('#username').fill(username);
await page.locator('#email').fill(email);
await page.locator('#password').fill(password);
await page.locator('#confirm_password').fill(password);
await page.locator('input[type="file"]').setInputFiles(avatarPath);
await page.locator('button[type="submit"]').click();
await page.waitForSelector('.success-message', { timeout: 10000 });
console.log(`Акаунт ${username} успішно створено!`);
const credentials = `Логін: ${username}\nПароль: ${password}\n---\n`;
fs.appendFileSync('accounts.txt', credentials);
} catch (error) {
console.error('Сталася помилка під час створення акаунта:', error.message);
await page.screenshot({ path: `error_${Date.now()}.png` });
} finally {
await browser.close();
}
}
async function runInParallel(numberOfAccounts) {
const promises = [];
for (let i = 0; i < numberOfAccounts; i++) {
promises.push(createAccount());
}
await Promise.all(promises);
console.log(`\nЗавершено створення ${numberOfAccounts} акаунтів. Дані збережено у accounts.txt`);
}
runInParallel(3);Крок 3: Підготовка та запуск
1. Створіть файл `bot.js` та скопіюйте в нього код вище.
2. Знайдіть зображення, назвіть його `avatar.png` і покладіть у ту ж папку, де лежить `bot.js`.
3. Замініть URL та селектори (`#username`, `#email` і т.д.) на реальні дані з сайту, який ви хочете автоматизувати. Щоб їх знайти, відкрийте сайт, натисніть F12 (Інструменти розробника), виберіть елемент і скопіюйте його селектор.
4. Запустіть скрипт у терміналі:
bashnode bot.jsВи побачите, як відкриються три вікна браузера, і в кожному з них скрипт буде виконувати реєстрацію. Після завершення у вашій папці з'явиться файл `accounts.txt` з логінами та паролями.
Висновок
Як бачите, Playwright дозволяє перетворити складну рутинну задачу на простий скрипт. Цей підхід можна масштабувати: додавати роботу з проксі, інтегрувати сервіси для розпізнавання капчі, генерувати більш реалістичні дані та багато іншого.
Головне — пам'ятати про етичну сторону автоматизації: не створюйте навантаження на сервери та поважайте правила сайтів, з якими працюєте.




