انتقل إلى المحتوى الرئيسي

الوحدات

يقوم 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)، يمكنك أيضًا استخدام واجهات برمجة تطبيقات حزمة WebdriverIO لإدارة الجلسات. يمكن استيراد واجهات برمجة التطبيقات باستخدام 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