Skip to content

Exemples de scripts Playwright

Ce chapitre vous propose des modèles de scripts complets pour des scénarios de commerce électronique et de réseaux sociaux fréquents. Tous les exemples sont basés sur le framework Node.js.


1. Modèle de connexion automatique complet

Ce script gère l'ensemble du flux : démarrage de l'environnement via l'ApiServer, navigation, saisie des identifiants et vérification de la réussite.

javascript
const { chromium } = require('playwright');
const axios = require('axios');

const API_URL = 'http://127.0.0.1:8186';
const SESSION_ID = 'VOTRE_SESSION_ID';

async function autoLogin() {
    // 1. Démarrer l'environnement
    const response = await axios.post(`${API_URL}/api/v1/browser/start`, { Session_ID: SESSION_ID });
    const wsEndpoint = response.data.data.ws;

    // 2. Se connecter via Playwright
    const browser = await chromium.connectOverCDP(wsEndpoint);
    const context = browser.contexts()[0];
    const page = context.pages()[0] || await context.newPage();

    try {
        // 3. Aller à la page de connexion
        await page.goto('https://example.com/login');

        // 4. Remplir le formulaire avec les Locators
        await page.getByLabel('Email').fill('user@example.com');
        await page.getByLabel('Mot de passe').fill('password123');
        await page.getByRole('button', { name: 'Se connecter' }).click();

        // 5. Attendre la navigation vers le tableau de bord
        await page.waitForURL('**/dashboard');
        console.log('✅ Connexion réussie !');

    } catch (error) {
        console.error('❌ Échec de la connexion :', error);
    } finally {
        await browser.close();
    }
}

autoLogin();

2. Injection de Cookies par lots

Ce scénario est idéal si vous achetez des comptes avec des fichiers de cookies ou si vous souhaitez migrer l'état de connexion.

javascript
const cookies = [
    { name: 'session_token', value: 'xyz123', domain: 'example.com', path: '/' },
    { name: 'user_id', value: '456', domain: 'example.com', path: '/' }
];

// ... (Connexion initiale omise)
const context = browser.contexts()[0];

// Injecter les cookies avant la navigation
await context.addCookies(cookies);

// Aller directement à une page protégée
await page.goto('https://example.com/profile');

3. Scénario de commerce électronique : Vérification des commandes

Simulez un utilisateur parcourant ses commandes sur Amazon ou eBay.

javascript
async function checkOrders() {
    // ... (Initialisation)
    await page.goto('https://www.ebay.com/mys/overview');

    // Attendre que la liste des commandes apparaisse
    const orderCount = await page.locator('.order-item').count();
    console.log(`Nombre de commandes trouvées : ${orderCount}`);

    // Prendre une capture d'écran de la liste
    await page.screenshot({ path: 'orders_summary.png' });
}

4. Scénario de réseaux sociaux : Publication auto avec image

javascript
async function postToTwitter(content, imagePath) {
    // ... (Connexion)
    await page.goto('https://twitter.com/compose/tweet');

    // Saisir le texte
    await page.locator('[data-testid="tweetTextarea_0"]').fill(content);

    // Télécharger une image
    const [fileChooser] = await Promise.all([
        page.waitForEvent('filechooser'),
        page.locator('[data-testid="fileInput"]').click()
    ]);
    await fileChooser.setFiles(imagePath);

    // Cliquer sur Publier
    await page.locator('[data-testid="tweetButtonInline"]').click();
}

Conseils pour une automatisation stable

  1. Vitesse de frappe humaine : Évitez de remplir les formulaires instantanément. Utilisez l'option delay :
    javascript
    await page.locator('#username').fill('mon_compte', { delay: 100 });
  2. Mouvement de souris aléatoire : Pour les sites avec un contrôle des risques très strict, simulez des mouvements de souris avant de cliquer.
  3. Gestion des erreurs : Utilisez toujours des blocs try...finally pour vous assurer que browser.close() est toujours appelé, même en cas d'erreur de script.

TIP

Ces modèles couvrent 80 % des besoins courants. Pour des besoins plus spécifiques, n'hésitez pas à consulter la Documentation officielle de Playwright.