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
- Vitesse de frappe humaine : Évitez de remplir les formulaires instantanément. Utilisez l'option
delay:javascriptawait page.locator('#username').fill('mon_compte', { delay: 100 }); - 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.
- Gestion des erreurs : Utilisez toujours des blocs
try...finallypour vous assurer quebrowser.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.
