سرویس رهگیری
wdio-intercept-service یک پکیج شخص ثالث است، برای اطلاعات بیشتر لطفا به GitHub | npm مراجعه کنید
🕸 رهگیری و بررسی فراخوانیهای HTTP ajax در webdriver.io
این یک افزونه برای webdriver.io است. اگر هنوز با آن آشنا نیستید، آن را بررسی کنید، بسیار جالب است.
اگرچه از selenium و webdriver برای تستهای e2e و به ویژه تستهای رابط کاربری استفاده میشود، ممکن است بخواهید درخواستهای HTTP انجام شده توسط کد سمت کاربر خود را ارزیابی کنید (به عنوان مثال وقتی بازخورد فوری رابط کاربری ندارید، مانند در فراخوانیهای متریک یا ردیابی). با wdio-intercept-service میتوانید فراخوانیهای HTTP ajax که توسط برخی اقدامات کاربر (مثلاً فشار دکمه و غیره) آغاز میشوند را رهگیری کنید و بعداً درباره درخواست و پاسخهای مربوطه تأیید کنید.
البته یک محدودیت وجود دارد: شما نمیتوانید فراخوانیهای HTTP که هنگام بارگذاری صفحه آغاز میشوند (مانند اکثر SPAها) را رهگیری کنید، زیرا نیاز به برخی کارهای راهاندازی دارد که فقط پس از بارگذاری صفحه میتواند انجام شود (به دلیل محدودیتهای selenium). این بدان معناست که شما فقط میتوانید درخواستهایی را ثبت کنید که در داخل یک تست آغاز شدهاند. اگر با این محدودیت مشکلی ندارید، این افزونه ممکن است مناسب شما باشد، پس ادامه مطلب را بخوانید.
پیشنیازها
- webdriver.io v5.x یا جدیدتر.
توجه! اگر هنوز از webdriver.io v4 استفاده میکنید، لطفاً از شاخه v2.x این افزونه استفاده کنید!
نصب
npm install wdio-intercept-service -D
استفاده
استفاده با WebDriver CLI
باید به سادگی اضافه کردن wdio-intercept-service به wdio.conf.js
شما باشد:
exports.config = {
// ...
services: ['intercept']
// ...
};
و همه چیز آماده است.
استفاده با WebDriver Standalone
هنگام استفاده از WebdriverIO Standalone، توابع before
و beforeTest
/ beforeScenario
باید به صورت دستی فراخوانی شوند.
import { remote } from 'webdriverio';
import WebdriverAjax from 'wdio-intercept-service'
const WDIO_OPTIONS = {
port: 9515,
path: '/',
capabilities: {
browserName: 'chrome'
},
}
let browser;
const interceptServiceLauncher = WebdriverAjax();
beforeAll(async () => {
browser = await remote(WDIO_OPTIONS)
interceptServiceLauncher.before(null, null, browser)
})
beforeEach(async () => {
interceptServiceLauncher.beforeTest()
})
afterAll(async () => {
await client.deleteSession()
});
describe('', async () => {
... // See example usage
});