پرش به محتوای اصلی

مچرهای سفارشی

WebdriverIO از یک کتابخانه اعتبارسنجی expect با سبک Jest استفاده می‌کند که دارای ویژگی‌های خاص و مچرهای سفارشی مخصوص اجرای تست‌های وب و موبایل است. اگرچه کتابخانه مچرها بزرگ است، اما قطعاً برای تمام موقعیت‌های ممکن مناسب نیست. بنابراین، امکان گسترش مچرهای موجود با مچرهای سفارشی تعریف شده توسط شما وجود دارد.

هشدار

در حال حاضر تفاوتی در نحوه تعریف مچرهایی که مختص شیء browser یا نمونه element هستند وجود ندارد، اما این موضوع ممکن است در آینده تغییر کند. برای اطلاعات بیشتر در مورد این توسعه، webdriverio/expect-webdriverio#1408 را دنبال کنید.

مچرهای سفارشی مرورگر

برای ثبت یک مچر سفارشی مرورگر، از تابع extend روی شیء expect استفاده کنید. این کار را می‌توانید مستقیماً در فایل spec خود یا به عنوان بخشی از هوک مانند before در فایل wdio.conf.js انجام دهید:

customMatchers/example.ts
loading...

همانطور که در مثال نشان داده شده، تابع مچر، شیء مورد انتظار (مثلاً مرورگر یا شیء المنت) را به عنوان پارامتر اول و مقدار مورد انتظار را به عنوان پارامتر دوم دریافت می‌کند. سپس می‌توانید از مچر به شکل زیر استفاده کنید:

customMatchers/example.ts
loading...

مچرهای سفارشی المنت

مشابه مچرهای سفارشی مرورگر، مچرهای المنت تفاوتی ندارند. در اینجا نمونه‌ای از نحوه ایجاد یک مچر سفارشی برای اعتبارسنجی aria-label یک المنت آمده است:

customMatchers/example.ts
loading...

این به شما امکان می‌دهد اعتبارسنجی را به شکل زیر فراخوانی کنید:

customMatchers/example.ts
loading...

پشتیبانی از TypeScript

اگر از TypeScript استفاده می‌کنید، یک مرحله دیگر برای اطمینان از امنیت نوع مچرهای سفارشی شما لازم است. با گسترش رابط Matcher با مچرهای سفارشی خود، تمام مشکلات مربوط به نوع برطرف می‌شوند:

customMatchers/example.ts
loading...

اگر یک مچر نامتقارن سفارشی ایجاد کرده‌اید، می‌توانید به طور مشابه انواع expect را به شکل زیر گسترش دهید:

declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot