Як використовувати AdsPower з Playwright для надійного E2E-тестування
Швидкий огляд
Дізнайтеся, як поєднати антидетект-профілі AdsPower з Playwright для стабільного ізольованого наскрізного тестування мультиакаунтних і геозалежних веб-додатків.
Як використовувати AdsPower з Playwright для надійного E2E-тестування
Наскрізні тести падають з причин, які не мають нічого спільного з вашим кодом: спільний набір cookie, відбиток, що змінюється між запусками, або проксі, який змінюється посеред сесії. AdsPower вирішує проблему ідентичності, надаючи кожному тестовому запуску власний ізольований профіль браузера зі стабільним відбитком. Playwright вирішує проблему керування за допомогою швидкої та надійної автоматизації в Chromium, Firefox і WebKit.
У цій статті пояснюється, як ці два інструменти поєднуються, як їх налаштувати та які проблеми тестування це поєднання насправді усуває.
Чому варто поєднати антидетект-браузер із Playwright?

First viewport screenshot of Release notes | Playwright Python.
Playwright уже ізолює контексти браузера, тому справедливе питання: навіщо взагалі додавати антидетект-браузер? Відповідь у тому, що ізоляція Playwright є в пам'яті та тимчасовою. Закрийте браузер — і контекст зникне. Ізоляція AdsPower є постійною та на рівні ідентичності: кожен профіль зберігає власний відбиток, cookie, локальне сховище та прив'язку до проксі між сесіями.
Ця різниця має значення, коли вашим тестам потрібно:
- Імітувати кількох різних користувачів на одному сайті без взаємного забруднення
- Підтримувати активну сесію входу протягом кількох тестових запусків
- Перевіряти поведінку з різних країн, використовуючи IP-адреси відповідних країн
- Відтворювати помилку, яка з'являється лише за певного відбитка пристрою
- Запускати автоматизацію для акаунтів, які антифрод-системи інакше пов'язали б між собою
Проксі в Playwright налаштовується для кожного контексту браузера, що корисно, але саме лише налаштування проксі не змінює сигнали Canvas, WebGL чи user-agent. AdsPower керує цим рівнем.
Як два інструменти розподіляють роботу
Уявіть розподіл так:
| Рівень | Керується |
|---|---|
| Тестова логіка, перевірки, селектори, повторні спроби | Playwright |
| Бінарний файл браузера та рушій рендерингу | AdsPower (SunBrowser на Chromium, FlowerBrowser на Firefox) |
| Параметри відбитка (Canvas, WebGL, мережа, user agent) | AdsPower |
| Прив'язка проксі до ідентичності | AdsPower |
| Збереження сесії (cookie, сховище) | Профіль AdsPower |
| Паралельне виконання та звітність | Playwright |
Playwright керує браузером. AdsPower визначає, як браузер виглядає для веб-сайту.
Попередні вимоги
Перед початком переконайтеся, що у вас є:
- Встановлений AdsPower і принаймні один створений профіль. Безкоштовний план включає 2 профілі, чого достатньо для прототипування робочого процесу.
- Встановлені Node.js і Playwright у вашому проєкті (
npm init playwright@latest). - Увімкнений локальний API AdsPower у клієнті. Вам знадобиться порт API і, якщо налаштовано, ключ API.
- Проксі, призначені профілям, які ви плануєте тестувати. Якщо ви ще обираєте налаштування, порівняння спільноти щодо поєднань антидетект-браузерів і проксі стане корисною перевіркою реальності щодо того, які комбінації залишаються стабільними тижнями, а не годинами.
Крок 1: Запустіть локальний API AdsPower
Відкрийте клієнт AdsPower і перейдіть до розділу API. Увімкніть службу локального API та запам'ятайте порт (зазвичай типовим є 50325). Якщо ваша команда вимагає автентифікації, згенеруйте ключ API і зберігайте його у змінній середовища, а не в системі контролю версій.
Переконайтеся, що служба відповідає, перш ніж писати будь-який тестовий код:
curl http://local.adspower.net:50325/status
Успішна відповідь підтверджує, що клієнт запущено та доступно.
Крок 2: Запустіть профіль і отримайте його endpoint для налагодження

First viewport screenshot of Release notes | Playwright Java.
API AdsPower надає endpoint, який запускає профіль і повертає URL WebSocket-налагоджувача. Саме до цього URL підключається Playwright.
async function startAdsPowerProfile(profileId) {
const url = `http://local.adspower.net:50325/api/v1/browser/start?user_id=${profileId}`;
const res = await fetch(url);
const data = await res.json();
if (data.code !== 0) {
throw new Error(`AdsPower start failed: ${data.msg}`);
}
return data.data.ws.puppeteer;
}
Повернене значення — це endpoint Chrome DevTools Protocol. Незважаючи на назву поля, він працює з будь-яким CDP-сумісним клієнтом, включно з Playwright.
Крок 3: Підключіть Playwright до запущеного профілю

First viewport screenshot of Release notes | Playwright .NET.
Використовуйте chromium.connectOverCDP, щоб приєднатися до вже запущеного браузера, а не запускати новий.
const { chromium } = require('playwright');
async function runTest(profileId) {
const wsEndpoint = await startAdsPowerProfile(profileId);
const browser = await chromium.connectOverCDP(wsEndpoint);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
await page.goto('https://example.com/dashboard');
await page.waitForLoadState('networkidle');
// Your assertions here
const title = await page.title();
console.log('Loaded:', title);
await browser.close();
}
Тут важливі дві деталі. По-перше, ви приєднуєтеся до наявного контексту, тому не створюйте новий — відбиток і проксі містяться в профілі, який запустив AdsPower. По-друге, завжди закривайте з'єднання браузера після завершення тесту, а потім викликайте endpoint зупинки AdsPower, щоб профіль було звільнено для наступного запуску.
Крок 4: Коректно зупиніть профіль
Залишені профілі — найпоширеніша причина нестабільних мультиакаунтних тестових наборів. Додайте крок очищення:
async function stopAdsPowerProfile(profileId) {
await fetch(
`http://local.adspower.net:50325/api/v1/browser/stop?user_id=${profileId}`
);
}
Обгорніть це в блок finally або фікстуру Playwright, щоб воно виконувалося навіть коли тест падає.
Крок 5: Запускайте профілі паралельно
Модель воркерів Playwright природно відображається на профілі AdsPower. Призначте один профіль на воркер, і кожен воркер отримає повністю ізольовану ідентичність.
// playwright.config.js
module.exports = {
workers: 4,
use: {
// Base config; profile assignment happens per test
},
};
Простий шаблон — зберігати масив ідентифікаторів профілів і звертатися до нього за індексом воркера, щоб жодні два воркери ніколи не торкалися одного профілю одночасно.
Практичний приклад: тестування цін, залежних від геолокації

First viewport screenshot of Release notes | Playwright Java.
Припустімо, ваш додаток показує різні ціни залежно від країни відвідувача. Ви хочете перевірити німецький, японський і бразильський варіанти.
- Створіть три профілі AdsPower, кожен прив'язаний до резидентного проксі в цільовій країні.
- Встановіть мову та часовий пояс кожного профілю відповідно до розташування проксі.
- У тесті запустіть профіль, підключіться через CDP, перейдіть на сторінку цін і перевірте валюту та суму.
const cases = [
{ profileId: 'de_profile', currency: 'EUR' },
{ profileId: 'jp_profile', currency: 'JPY' },
{ profileId: 'br_profile', currency: 'BRL' },
];
for (const testCase of cases) {
const wsEndpoint = await startAdsPowerProfile(testCase.profileId);
const browser = await chromium.connectOverCDP(wsEndpoint);
const page = browser.contexts()[0].pages()[0];
await page.goto('https://example.com/pricing');
const shown = await page.locator('[data-testid="currency"]').innerText();
if (shown !== testCase.currency) {
throw new Error(`Expected ${testCase.currency}, got ${shown}`);
}
await browser.close();
await stopAdsPowerProfile(testCase.profileId);
}
Саме тут поєднання виправдовує себе. Звичайний запуск Playwright з одним проксі вимагав би перебудови стану контексту для кожної країни і все одно показував би той самий відбиток у всіх трьох тестах.
Практичний приклад: збереження сесії входу між запусками
Деякі процеси — онбординг, багатокрокове оформлення замовлення, прогрів акаунта — дорого повторювати. Оскільки профіль AdsPower зберігає cookie та сховище, ви можете увійти один раз і повторно використовувати сесію:
- Запустіть скрипт налаштування, який запускає профіль, підключається, виконує вхід і закриває з'єднання без очищення сховища.
- У наступних тестових запусках підключіться до того самого профілю та перейдіть безпосередньо до автентифікованої області.
- Додайте захист, який виявляє стан виходу з системи та повторно автентифікується, щоб набір самовідновлювався.
Цей шаблон поширений у мультиакаунтних операціях, де тривалість сесії є найважливішою метрикою. Якщо ви керуєте багатьма акаунтами, а не багатьма тестами, ті самі принципи висвітлено в цьому посібнику з мультиакаунтингу з антидетект-браузерами.
Де це поєднання не працює
Варто бути чесними щодо обмежень.
- AdsPower не є тестовим раннером. У нього немає перевірок, звітів чи логіки повторних спроб. Усе це забезпечує Playwright.
- Реалістичність відбитка залежить від конфігурації. Сторонні порівняння антидетект-браузерів, як-от цей розбір AdsPower vs Vision, порушували питання щодо автоматично згенерованих апаратних параметрів. Перевіряйте свої профілі за допомогою перевірки відбитків, перш ніж довіряти їм у наборах, наближених до продакшн.
- Приєднання через CDP має накладні витрати. Підключення до наявного браузера повільніше, ніж запуск нового headless-екземпляра. Для чистих UI-тестів на рівні модулів звичайний Playwright швидший.
- Кількість профілів — реальне обмеження. 2 профілі безкоштовного плану обмежують паралелізм. Масштабуйте плани відповідно.
Коли використовувати це налаштування — а коли ні
Використовуйте AdsPower з Playwright, коли ваші тести залежать від ідентичності: мультиакаунтні процеси, геотаргетований контент, збереження сесії або рендеринг, чутливий до відбитка. Використовуйте звичайний Playwright, коли тестуєте логіку UI, яка не має нічого спільного з тим, ким виглядає відвідувач.
Практичне правило: якщо два тестові запуски були б невідрізненними для сервера, вам не потрібен антидетект-браузер. Якщо вони мають виглядати як дві різні людини на двох різних машинах — потрібен.
Пов'язане читання
- AdsPower vs Incogniton vs Dolphin Anty: посібник з мультиакаунтингу — Порівняйте AdsPower, Incogniton і Dolphin Anty для мультиакаунтингу: відбитки, автоматизація, командні інструменти, безкоштовні плани та ціни, щоб обрати правильний варіант.
- AdsPower vs Multilogin Homepage: найкращий антидетект-браузер? — Порівняння AdsPower і Multilogin Homepage: ціни, відбитки, автоматизація, проксі та безпека. Дізнайтеся, який антидетект-браузер підходить для вашого мультиакаунтного робочого процесу.
- Огляд браузера відбитків Maskfog: транскордонне рішення проти асоціації з вбудованими чистими IP — На основі офіційної сторінки цін і сторонніх рейтингових даних цей огляд охоплює чисті IP-пристрої Maskfog, політику безкоштовного середовища, цільових користувачів, процес налаштування, обмеження та критерії купівлі.
Часті запитання
Чи може Playwright запускати профілі AdsPower безпосередньо?
Ні. AdsPower запускає браузер; Playwright приєднується до нього через Chrome DevTools Protocol, використовуючи WebSocket-endpoint, повернутий локальним API AdsPower.
Чи працює це з FlowerBrowser (Firefox)?
connectOverCDP у Playwright є специфічним для Chromium. Для профілів на базі Firefox потрібна інша стратегія приєднання, і підтримка залежить від протоколу налагодження, який надає профіль. SunBrowser (Chromium) — це прямолінійний шлях.
Як уникнути колізій профілів у паралельних запусках?
Призначте кожному воркеру Playwright унікальний ідентифікатор профілю та ніколи не використовуйте профіль повторно, поки він запущений. Відстежуйте стан профілю у фікстурі та звільняйте його під час очищення.
Чи можу я встановити проксі з Playwright замість AdsPower?
Можете, але не варто. Проксі є частиною ідентичності профілю. Встановлення його в Playwright, тоді як AdsPower повідомляє іншу конфігурацію мережі, створює невідповідність, яку перевірки відбитків виявлять.
Чи безпечний локальний API?
За замовчуванням він прив'язаний до localhost. Якщо ви вмикаєте ключ API, зберігайте його у змінних середовища і ніколи не комітьте. Для командних налаштувань обмежте доступ до машини, на якій запущено клієнт AdsPower.
А як щодо CAPTCHA під час автоматизованих тестів?
Автоматизовані процеси часто викликають перевірки. Їх обробка — окреме питання від ідентичності браузера; робочий процес інтеграції сервісу розв'язування задокументовано в цьому посібнику з налаштування AdsPower і Anti Captcha.
Висновок
AdsPower і Playwright вирішують різні половини однієї проблеми. Playwright дає вам швидкий, виразний спосіб керувати браузером і перевіряти те, що він відображає. AdsPower надає кожній із цих сесій браузера правдоподібну, постійну, ізольовану ідентичність із власним відбитком і проксі.
Разом вони дозволяють тестувати мультиакаунтну поведінку, геозалежний досвід і тривалі сесії без нестабільності, що виникає через спільний стан. Налаштування не складне — увімкніть локальний API, запустіть профіль, підключіться через CDP і приберіть за собою під час очищення — але дисципліна ставлення до профілів як до повноцінних тестових фікстур відрізняє стабільний набір від крихкого.
Почніть із двох профілів на безкоштовному плані, доведіть робочий процес на одному геотесті, а потім масштабуйте шаблон на всю вашу матрицю.



