Câu hỏi phỏng vấn #25: Why we use async & await in Playwright?
Trả lời mẫu:
1. Asynchronous Nature của Browser Automation:
// Browser operations take time
// ❌ Wrong - không chờ completion
page.goto('https://example.com');
page.click('#button'); // Fails - page chưa load // ✅ Correct - chờ operations complete
await page.goto('https://example.com');
await page.click('#button');
2. Promise-based API:
// Playwright methods return Promises
const response = page.goto('/'); // Returns Promise<Response> // Must await to get actual value
const response = await page.goto('/');
console.log(response.status()); // 200
3. Sequential Execution:
async function loginUser() { await page.goto('/login'); await page.fill('#username', 'user@test.com'); await page.fill('#password', 'password123'); await page.click('#submit'); await expect(page).toHaveURL('/dashboard');
}
4. Error Handling:
try { await page.click('#non-existent');
} catch (error) { console.log('Element not found:', error.message);
}
5. Parallel Operations:
// Run operations in parallel
const [response, download] = await Promise.all([ page.waitForResponse('**/api/data'), page.click('#download-btn')
]);
6. Clean, Readable Code:
// Async/await makes code look synchronous
async function testCheckout() { await addProductToCart(); await goToCheckout(); await fillShippingInfo(); await submitOrder(); await verifyOrderSuccess();
}
💡 Tips:
- Always use async/await với Playwright methods
- Don't forget await - common source of bugs
- Use Promise.all() cho parallel operations
- async/await better than .then() chains
Lời Kết
Playwright đang trở thành một trong những automation frameworks phổ biến nhất cho web testing. Thông qua series này, hy vọng bạn sẽ:
- Nắm vững kiến thức từ cơ bản đến nâng cao
- Tự tin trong các buổi phỏng vấn
- Áp dụng hiệu quả vào dự án thực tế
- Trở thành một phần của cộng đồng Playwright Việt Nam năng động
📚 Bắt đầu hành trình của bạn với: Bài 1: Playwright vs Selenium
💬 Có câu hỏi? Tham gia group Facebook của chúng mình!
⭐ Theo dõi series để không bỏ lỡ bài viết mới!