إجراء
أمر الإجراء (action) هو واجهة منخفضة المستوى لتوفير إجراءات إدخال الأجهزة الافتراضية إلى متصفح الويب.
بالإضافة إلى الأوامر عالية المستوى مثل scrollIntoView
و doubleClick
، توفر واجهة برمجة Actions API تحكمًا تفصيليًا في ما يمكن أن تفعله أجهزة الإدخال المحددة. يوفر WebdriverIO واجهة لـ 3 أنواع من مصادر الإدخال:
- إدخال المفاتيح لأجهزة لوحة المفاتيح
- إدخال المؤشر للماوس أو القلم أو أجهزة اللمس
- وإدخالات العجلة لأجهزة عجلة التمرير
يجب إكمال كل سلسلة من أوامر الإجراء باستدعاء perform
لتشغيل مجموعة الإجراءات. هذا يؤدي إلى تحرير الإجراءات وإطلاق الأحداث. يمكنك تخطي هذا عن طريق تمرير true
(على سبيل المثال browser.actions(...).perform(true)
).
مصدر إدخال المفاتيح
مصدر إدخال المفاتيح هو مصدر إدخال مرتبط بجهاز من نوع لوحة المفاتيح. يمكن تشغيله باستخدام معلمات النوع key
. على سبيل المثال:
browser.action('key')
يقوم بإرجاع كائن KeyAction
يدعم الإجراءات التالية:
down(value: string)
: ينشئ إجراء ضغط المفتاحup(value: string)
: ينشئ إجراء رفع المفتاحpause(ms: number)
: يشير إلى أن مصدر الإدخال لا يفعل شيئًا خلال وقت معين
الأحرف الخاصة
إذا كنت ترغب في استخدام أحرف خاصة مثل Control
أو Page Up
أو Shift
، تأكد من استيراد كائن Key
من حزمة webdriverio
كما يلي:
import { Key } from 'webdriverio'
يتيح لك الكائن الوصول إلى تمثيل يونيكود للحرف الخاص المطلوب.
مصدر إدخال المؤشر
مصدر إدخال المؤشر هو مصدر إدخال مرتبط بجهاز إدخال من نوع المؤشر. يمكن تحديد النوع عند استدعاء أمر action
، على سبيل المثال:
browser.action('pointer', {
parameters: { pointerType: 'mouse' } // "mouse" هي القيمة الافتراضية، ويمكن أيضًا: "pen" أو "touch"
})
يقوم بإرجاع كائن PointerAction
يدعم الإجراءات التالية:
down (button: 'left' | 'middle' | 'right')
: ينشئ إجراءً للضغط على مفتاح واحدdown (params: PointerActionParams)
: ينشئ إجراءً للضغط على مفتاح واحد مع معلمات مفصلةmove (x: number, y: number)
: ينشئ إجراءً لتحريك المؤشر بمقدارx
وy
بكسل من منفذ العرضmove (params: PointerActionMoveParams)
: ينشئ إجراءً لتحريك المؤشر بمقدارx
وy
بكسل منorigin
المحدد. يمكن تحديدorigin
كموضع المؤشر الحالي (مثل "pointer")، أو منفذ العرض (مثل "viewport") أو مركز عنصر محدد.up (button: 'left' | 'middle' | 'right')
: ينشئ إجراءً لرفع مفتاح واحدup (params: PointerActionUpParams)
: ينشئ إجراءً لرفع مفتاح واحد مع معلمات مفصلةcancel()
: إجراء يلغي الإدخال الحالي لهذا المؤشر.pause(ms: number)
: يشير إلى أن مصدر الإدخال لا يفعل شيئًا خلال وقت معين
يمكنك العثور على معلومات مفصلة حول أنواع المعلمات PointerActionParams
و PointerActionMoveParams
و PointerActionUpParams
في تعريف نوع المشروع.
مصدر إدخال العجلة
مصدر إدخال العجلة هو مصدر إدخال مرتبط بجهاز إدخال من نوع العجلة.
browser.action('wheel')
يقوم بإرجاع كائن WheelAction
يدعم الإجراءات التالية:
scroll (params: ScrollParams)
: يقوم بتمرير الصفحة إلى إحداثيات أو أصل معينpause(ms: number)
: يشير إلى أن مصدر الإدخال لا يفعل شيئًا خلال وقت معين
يمكنك العثور على معلومات مفصلة حول نوع المعلمة ScrollParams
في تعريف نوع المشروع.
الاستخدام
browser.action()
أمثلة
it('drag and drop using pointer action command', async () => {
const origin = await $('#source')
const targetOrigin = await $('#target')
return browser.action('pointer')
.move({ duration: 0, origin, x: 0, y: 0 })
.down({ button: 0 }) // left button
.pause(10)
.move({ duration: 0, origin: targetOrigin })
.up({ button: 0 })
.perform()
});
import { Key } from 'webdriverio'
it('should emit key events using key action commands', async () => {
const elem = await $('input')
await elem.click() // make element active
await browser.action('key')
.down('f')
.down('o')
.down('o')
.up('f')
.up('o')
.up('o')
.perform()
console.log(await elem.getValue()) // returns "foo"
// copy value out of input element
await browser.action('key')
.down(Key.Ctrl).down('c')
.pause(10)
.up(Key.Ctrl).up('c')
.perform()
})
it('should scroll using wheel action commands', async () => {
console.log(await browser.execute(() => window.scrollY)) // returns 0
await browser.action('wheel').scroll({
deltaX: 0,
deltaY: 500,
duration: 200
}).perform()
console.log(await browser.execute(() => window.scrollY)) // returns 500
})