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

ماژول‌ها

WebdriverIO ماژول‌های مختلفی را در NPM و سایر رجیستری‌ها منتشر می‌کند که می‌توانید از آن‌ها برای ساخت فریمورک اتوماسیون خود استفاده کنید. اطلاعات بیشتر در مورد انواع راه‌اندازی WebdriverIO را اینجا ببینید.

webdriver و devtools

بسته‌های پروتکل (webdriver و devtools) یک کلاس با توابع استاتیک زیر را ارائه می‌دهند که به شما امکان ایجاد جلسات را می‌دهند:

newSession(options, modifier, userPrototype, customCommandWrapper)

یک جلسه جدید با قابلیت‌های خاص را شروع می‌کند. بر اساس پاسخ جلسه، دستورات از پروتکل‌های مختلف ارائه می‌شوند.

پارامترها
  • options: گزینه‌های WebDriver
  • modifier: تابعی که اجازه می‌دهد نمونه کلاینت را قبل از برگرداندن تغییر دهید
  • userPrototype: اشیاء خصوصیات که اجازه می‌دهد پروتوتایپ نمونه را گسترش دهید
  • customCommandWrapper: تابعی که اجازه می‌دهد عملکرد را در اطراف فراخوانی‌های تابع بسته‌بندی کنید
مقدار بازگشتی
مثال
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})

attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)

به یک جلسه WebDriver یا DevTools در حال اجرا متصل می‌شود.

پارامترها
  • attachInstance: نمونه‌ای برای اتصال به یک جلسه یا حداقل یک شیء با ویژگی sessionId (مثلاً { sessionId: 'xxx' })
  • modifier: تابعی که اجازه می‌دهد نمونه کلاینت را قبل از برگرداندن تغییر دهید
  • userPrototype: اشیاء خصوصیات که اجازه می‌دهد پروتوتایپ نمونه را گسترش دهید
  • customCommandWrapper: تابعی که اجازه می‌دهد عملکرد را در اطراف فراخوانی‌های تابع بسته‌بندی کنید
مقدار بازگشتی
مثال
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)

reloadSession(instance)

جلسه مشخص شده را با نمونه ارائه شده بازنشانی می‌کند.

پارامترها
  • instance: نمونه بسته برای بازنشانی
مثال
const client = await WebDriver.newSession({...})
await WebDriver.reloadSession(client)

webdriverio

مشابه بسته‌های پروتکل (webdriver و devtools)، همچنین می‌توانید از API‌های بسته WebdriverIO برای مدیریت جلسات استفاده کنید. API‌ها را می‌توان با استفاده از import { remote, attach, multiremote } from 'webdriverio وارد کرد و شامل عملکردهای زیر است:

remote(options, modifier)

یک جلسه WebdriverIO را شروع می‌کند. نمونه شامل تمام دستورات مانند بسته پروتکل است اما با توابع ترتیب بالاتر، به مستندات API مراجعه کنید.

پارامترها
  • options: گزینه‌های WebdriverIO
  • modifier: تابعی که اجازه می‌دهد نمونه کلاینت را قبل از برگرداندن تغییر دهید
مقدار بازگشتی
مثال
import { remote } from 'webdriverio'

const browser = await remote({
capabilities: { browserName: 'chrome' }
})

attach(attachOptions)

به یک جلسه WebdriverIO در حال اجرا متصل می‌شود.

پارامترها
  • attachOptions: نمونه‌ای برای اتصال به یک جلسه یا حداقل یک شیء با ویژگی sessionId (مثلاً { sessionId: 'xxx' })
مقدار بازگشتی
مثال
import { remote, attach } from 'webdriverio'

const browser = await remote({...})
const newBrowser = await attach(browser)

multiremote(multiremoteOptions)

یک نمونه multiremote را آغاز می‌کند که به شما امکان می‌دهد چندین جلسه را در یک نمونه واحد کنترل کنید. مثال‌های multiremote ما را برای موارد استفاده مشخص بررسی کنید.

پارامترها
  • multiremoteOptions: یک شیء با کلیدهایی که نام مرورگر را نشان می‌دهند و گزینه‌های WebdriverIO آنها.
مقدار بازگشتی
مثال
import { multiremote } from 'webdriverio'

const matrix = await multiremote({
myChromeBrowser: {
capabilities: { browserName: 'chrome' }
},
myFirefoxBrowser: {
capabilities: { browserName: 'firefox' }
}
})
await matrix.url('http://json.org')
await matrix.getInstance('browserA').url('https://google.com')

console.log(await matrix.getTitle())
// returns ['Google', 'JSON']

@wdio/cli

به جای فراخوانی دستور wdio، می‌توانید اجراکننده تست را به عنوان ماژول وارد کرده و آن را در یک محیط دلخواه اجرا کنید. برای این کار، باید بسته @wdio/cli را به عنوان ماژول وارد کنید، مانند این:

import Launcher from '@wdio/cli'

پس از آن، یک نمونه از لانچر ایجاد کنید و تست را اجرا کنید.

Launcher(configPath, opts)

سازنده کلاس Launcher انتظار URL فایل پیکربندی و یک شیء opts با تنظیماتی که مقادیر در پیکربندی را بازنویسی خواهند کرد، دارد.

پارامترها
  • configPath: مسیر به wdio.conf.js برای اجرا
  • opts: آرگومان‌هایی (<RunCommandArguments>) برای بازنویسی مقادیر از فایل پیکربندی
مثال
const wdio = new Launcher(
'/path/to/my/wdio.conf.js',
{ spec: '/path/to/a/single/spec.e2e.js' }
)

wdio.run().then((exitCode) => {
process.exit(exitCode)
}, (error) => {
console.error('Launcher failed to start the test', error.stacktrace)
process.exit(1)
})

دستور run یک Promise را برمی‌گرداند. اگر تست‌ها با موفقیت اجرا شدند یا شکست خوردند، حل می‌شود، و اگر لانچر نتوانست تست‌ها را اجرا کند، رد می‌شود.

@wdio/browser-runner

هنگام اجرای تست‌های واحد یا کامپوننت با استفاده از اجراکننده مرورگر WebdriverIO، می‌توانید ابزارهای موک‌سازی را برای تست‌های خود وارد کنید، مثلاً:

import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'

صادرات نام‌گذاری شده زیر در دسترس هستند:

fn

تابع موک، اطلاعات بیشتر در مستندات رسمی Vitest را ببینید.

spyOn

تابع جاسوسی، اطلاعات بیشتر در مستندات رسمی Vitest را ببینید.

mock

روشی برای موک کردن فایل یا ماژول وابستگی.

پارامترها
  • moduleName: یا یک مسیر نسبی به فایلی که باید موک شود یا یک نام ماژول.
  • factory: تابعی برای برگرداندن مقدار موک شده (اختیاری)
مثال
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))

mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})

unmock

لغو موک وابستگی که در دایرکتوری موک دستی (__mocks__) تعریف شده است.

پارامترها
  • moduleName: نام ماژولی که باید از حالت موک خارج شود.
مثال
unmock('lodash')

Welcome! How can I help?

WebdriverIO AI Copilot